BLOGTIMES
2011/09/10

Ruby 1.9.2 から $LOAD_PATH にカレントディレクトリが入っていない

  ruby 
このエントリーをはてなブックマークに追加

久しぶりに新しいマシンにRubyをインストールして、テスト用のプログラムを起動してみたらエラーを吐いてしまいました。旧マシンは1.9.2p0 [i386-mingw32]、新しいマシンは1.9.2p290 [i386-mingw32] です。どうも自作のライブラリのロードに失敗している(ファイルが見つからないと言っている)ようなので、試しにスクリプトの最初に下記を追加してみたところ動作するようになりました。どうやら$LOAD_PATHにカレントディレクトリが含まれていないのが原因のようです

$LOAD_PATH.push('.')

いろいろ調べてみると同じようなところでハマった人のエントリを発見。

Ruby 1.9.2から$LOAD_PATHにカレントディレクトリが含まれなくなった - ぬいぐるみライフ(仮)

タイトルの通り,Ruby 1.9.2から$LOAD_PATHにカレントディレクトリが含まれなくなった($:も同様).この変更により,以下のような条件でrequireを使っているスクリプトが動かなくなった.
  ・スクリプトが置いてあるディレクトリdirで実行することが前提として作られている
  ・他のスクリプトをdirからの相対パスでrequireしている

下記のような方法が使えるらしいので、今回はこれで済ませる事にしました。

require "./bar"

後方互換性を考えなければ、require_relativeを使うのがいいみたいです。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4440
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン