は、私がデフォルトで「必要とする」経路は何ですか? Rubyでは
require "some_file"
を行うときにRubyが特定の場所でファイルを探しますと言われています。
私はそれがsome_file.rb
を探すことを知っていますが、それはデフォルトでどこを探しますか?
は、私がデフォルトで「必要とする」経路は何ですか? Rubyでは
require "some_file"
を行うときにRubyが特定の場所でファイルを探しますと言われています。
私はそれがsome_file.rb
を探すことを知っていますが、それはデフォルトでどこを探しますか?
それはあなたのプラットフォームに依存し、どのようにルビーがコンパイルされたので、これへの「」答えはありません。あなたが実行して見つけることができます。
ruby -e 'puts $:'
一般的に、しかし、あなたはそれぞれの下にアーチ、バージョン、および一般的なディレクトリを含む標準、サイト、およびベンダのRubyライブラリパスを、持っています。
$ LOAD_PATHグローバル変数($ :)は、検索されるディレクトリのリストを含んでいます。
参照:http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-require
は(文字列)を必要と
=> trueまたはfalse Rubyは成功した場合はtrueを返し、文字列という名前のライブラリをロードしようとします。ファイル名が絶対パスに解決されない場合は、$:にリストされているディレクトリで検索されます。ファイルの拡張子が.rbの場合、ソースファイルとしてロードされます。拡張子が ".so"、 ".o"、 ".dll"の場合、またはデフォルトの共有ライブラリ拡張が現在のプラットフォーム上にある場合、Rubyは共有ライブラリをRuby拡張モジュールとして読み込みます。それ以外の場合、Rubyは名前に ".rb"、 ".so"などを追加しようとします。読み込まれたフィーチャの名前が$:の配列に追加されます。Rubyは$LOAD_PATH
アレイで指定されたすべてのパスを検索します。
またそうのように検索するディレクトリを追加することができます。
$LOAD_PATH.unshift File.expand_path('../path/from/this/file/to/another/directory', __FILE__)
まさに私が必要としたもの。ありがとう! – Kilhoffer
追加のパスが「」答えはあり
RUBYLIB環境変数を設定することで指定することができます。 $:または$ LOAD_PATH変数は実際に検索される場所の完全なリストを提供します。あなたはあなた自身が、それを印刷するためのシンプルでクリーンな方法を指摘しました... – Perry
Ah。どのように質問を読むかによって異なります。このRubyがどこにあるかについての "答え"がありますが、別のRubyを実行する場合や別のプラットフォームで変更される場合があります。例:MRI 1.8.7とREEは異なるパスを使用するか、DarwinとLinux MRIは微妙に異なるパスを使用します。私はどちらが確実かわからなかったので、この答えでより快適に感じました。 –
それは十分ですが、私は質問者が、プラットフォーム間で一定であると仮定するのではなく、ロードパスがどのようになっているかを知りたいと思っていたと推測しています。 – Perry