こちら[requireとrequire_relativeの違いとは?] に詳しく書いてあるのですが、
ファイルを読み込む時はrequire
ではなく、require_relative
を使いましょう(Ruby1.9.2以降で、かつ$LOAD_PATH
に含まれていない場合)。
Ruby1.9.2以降、$LOAD_PATH
にカレントディレクトリが含まれなくなったため、
例えば、同じ階層のfile.rb
を読み込もうと思ってrequire 'file'
と書いたらエラーになります。
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in
`require': cannot load such file -- file (LoadError)
その回避方法として、require ./file
と相対パスで書くことも可能ですが、
違う階層から読み込むと結局エラーになってしまいます。
どうしてもrequire
と使いたい場合は、require
する前に、
カレントディレクトリを$LOAD_PATH
に追加する方法があります。
$:.unshift File.dirname(__FILE__) # ロードパスにカレントディレクトリを追加
require 'file'
因みに$:
は$LOAD_PATH
の別の書き方です。
$LOAD_PATH
… プログラム実行時に読み込まれるパス$:
… $LOAD_PATHの別の書き方