Ruby で require に書く場所は「コマンドを実行する場所からの相対位置」になる

実例

./lib/x.rb というファイルが以下のようであったとします。

class X
(中略)
end

また、./lib/a.rb というファイルが以下のようであったとします。

require './x'
(以下省略)

このとき、

カレントディレクトリが ./ であるときに $ ruby ./lib/a.rb を実行すると

require': cannot load such file エラーが出ます。

エラーが出ないようにするためには、./lib/a.rb の require の場所を以下のように変更します。

require './lib/x'
(以下省略)

結論

require に書く場所は、ruby コマンドを実行した場所からの相対位置 になります。

図解

上記の例での tree は以下のようになります。

(rubyコマンドを実行した場所)
  |
  |-- lib
      |
      |-- x.rb
      |
      |-- a.rb
Powered by はてなブログ