Rubyで相対パスのファイルをreuqire
タグ: ruby / 初版公開: 2013-11-21

以下のようなディレクトリ構造でソースファイルが配置されているとする。 ここでhoge.rbからlib/piyo.rbをrequireする場合を考える。

  • hoge.rb
  • lib
    • piyo.rb

Rubyで相対パスのファイルをrequireする場合、以下のイディオムが良く用いられる。

require File.expand_path('../lib/hoge.rb', __FILE__)

File.expand_path()は、第2引数のパスを起点に、第1引数のパスを、フルパスに展開するメソッドだ。

__FILE__にはそのファイルのパスが入っているが、これは絶対パスとは限らない。

そこで、File.expand_path()の第2引数にこれを指定し、第1引数にそのファイルからの相対パスを書くことで、目的のファイルの絶対パスが得られる。

なおRuby 1.9以降であれば、require_relativeを使えば、相対パスで目的のファイルを簡単にrequireすることができるようになった。

reuqire_relative 'lib/piyo.rb'