Rubyでは、次のことを行うと言われました。
require "some_file"
Rubyは特定の場所でファイルを探します。
some_file.rb
を検索することは知っていますが、デフォルトではどこで検索しますか?
プラットフォームに依存し、Rubyがどのようにコンパイルされたかによって、これに対する "the"の答えはありません。
Ruby -e 'puts $:'
ただし、一般的には、標準、サイト、およびベンダーRubyライブラリパスがあり、それぞれにArch、バージョン、および一般ディレクトリが含まれています。
Rubyは、$LOAD_PATH
配列で指定されたすべてのパスを検索します。
次のように検索するディレクトリを追加することもできます。
$LOAD_PATH.unshift File.expand_path('../path/from/this/file/to/another/directory', __FILE__)
rUBYLIB環境変数を設定することにより、追加のパスを指定できます
$ LOAD_PATHグローバル変数($:とも呼ばれます)には、検索されるディレクトリのリストが含まれています。
参照: http://www.Ruby-doc.org/core-1.9.3/Kernel.html#method-i-require
require(string)=> trueまたはfalse
Rubyはstringという名前のライブラリをロードしようとし、成功するとtrueを返します。ファイル名が絶対パスに解決されない場合、$:にリストされたディレクトリで検索されます。ファイルの拡張子が「.rb」の場合、ソースファイルとしてロードされます。拡張子が「.so」、「。o」、「。dll」、またはデフォルトの共有ライブラリ拡張子が現在のプラットフォームにある場合、Rubyは共有ライブラリを= Ruby extension。それ以外の場合、Rubyは、「。rb」、「。so」などを名前に追加しようとします。読み込まれた機能の名前が追加されます。 $:の配列に。
コマンドラインでRuby
を呼び出す場合、-I
引数を使用して追加の検索パスを提供できます。の出力を比較する
$ Ruby -e 'puts $:'
の出力で
$ Ruby -I /tmp -e 'puts $:'
2番目のものが/tmp
をオプションとしてリストする方法に注意してください。複数の-I
を使用して、複数のパスを追加できます。
Shebangでも使用できます。
#!/usr/bin/Ruby -I /tmp -I /usr/local/lib/Ruby