LoginSignup
6
3

More than 5 years have passed since last update.

よく見かける「$:.unshift "./lib"」とは何か

Posted at

最近Rubyを勉強していて、よく見かける$:.unshift "./lib"が何を意味しているのかよくわからなかったので調査。

「$:」とは

まず、先頭の「:$」の意味からしてよくわからず…
これは組み込み変数の'$LOAD_PATH'の別名とのこと。

$LOAD_PATHが何かといいますと、requireがファイルを読み込むときに検索するディレクトリの名前を含む配列になります。
irbを起動して>>p $LOAD_PATHで配列の内容を確認できます。

requireでの検索先の追加

ということで、$:.unshift "./lib"は難しいことは何もなくて、ただ単にrequireで読み込むファイルの検索先を配列に追加しているだけでした。
ただ、pushじゃなくunshiftを使うのは何故なのかはわかりませんでした。。。:sob:

スクリプトファイルからの相対パスの取得

ちなみに、自分が見ていたファイルでの検索先の追加は
$:.unshift(File.join(File.dirname(__FILE__), 'lib'))
という感じで書かれていて、こう書くことで対象のファイルから参照先の階層を指定できてファイル名変更があった時など便利な気がする。

6
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3