variable $-I
$: -> [String]
$LOAD_PATH -> [String]
$-I -> [String]
-
Rubyライブラリをロードするときの検索パスです。
Kernel.#load や Kernel.#require がファイルをロードする時に検索するディレクトリのリストを含む配列です。
起動時にはコマンドラインオプション -I で指定したディレクトリ、 環境変数 RUBYLIB の値、 コンパイル時に指定したデフォルト値、 "." (カレントディレクトリ) をこの順番で含みます。
以下に典型的な UNIX システム上でのロードパスを示します。
-I で指定したパス 環境変数 RUBYLIB の値 /usr/local/lib/ruby/site_ruby/VERSION サイト固有、バージョン依存のライブラリ /usr/local/lib/ruby/site_ruby/VERSION/ARCH サイト固有、システム依存、拡張ライブラリ /usr/local/lib/ruby/site_ruby サイト固有ライブラリ /usr/local/lib/ruby/VERSION 標準ライブラリ /usr/local/lib/ruby/VERSION/ARCH 標準、システム依存、拡張ライブラリ . カレントディレクトリ
上記表中の VERSION は Ruby のバージョンを表す文字列で、 「1.6」や「1.8」です。 ARCH はハードウェアと OS を表す文字列で、 「i686-linux」や「alpha-osf5.1」などです。 ARCH の値は Config::CONFIG['arch'] で得られます。
コンパイル時のデフォルトパスは 多くの UNIX システムでは "/usr/local/lib/ruby" です。 mswin32、mingw32、Cygwin、 bccwin32、mswince 環境では ruby.dll の位置からの相対で決まります。 DJGPP と emx (OS/2) では ruby.exe の位置からの相対で決まります。
-T オプションで起動時に $SAFE を 1 以上に 設定したときは "." (カレントディレクトリ) はロードパスに入りません。
require 'foo' を実行すると、 以下のように foo.rb と foo.so が交互に探索されます。
/usr/local/lib/ruby/site_ruby/VERSION/foo.rb /usr/local/lib/ruby/site_ruby/VERSION/foo.so /usr/local/lib/ruby/site_ruby/VERSION/ARCH/foo.rb /usr/local/lib/ruby/site_ruby/VERSION/ARCH/foo.so : :
なお、共有ライブラリの拡張子が .so でないシステムでは 「.so」が適切な拡張子に変更されます。 例えば HP-UX では require 'foo.so' とすると foo.sl を検索します。 したがって Ruby で記述されたコードでは常に .so を使うべきです。
なお、ロードパスをコマンドラインから調べるには
$ ruby -e 'puts $:'
とします。
この変数はグローバルスコープです。