2012-05-31 19 views

答えて

13

は、初期ロードパスは次のようになります。grep

$ ruby -e 'puts $LOAD_PATH' 
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1 
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.8.0 
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby 
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby/1.9.1 
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.8.0 
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby 
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1 
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin10.8.0 

武装、Rubyのソースの調査は、(これはRubyの1.9.3である)definition of ruby_initial_load_paths[] in version.cにつながります。最初に適用されるもの(NO_INITIAL_LOAD_PATHまたはRUBY_SEARCH_PATHは設定されていません)はRUBY_SITE_LIB2です。その定義we see上記の定義を見てみると:

#define RUBY_SITE_LIB2    RUBY_SITE_LIB "/"RUBY_LIB_VERSION 

in turn

#define RUBY_SITE_LIB RUBY_LIB_PREFIX"/site_ruby" 

を定義し、このチェーンに続き、これは上記の私のロードパスの最初のエントリに対応することが明らかになりました。同様に、この変数に入る他の定数は、他のロードパスエントリに対応します。

ruby_initial_load_paths[]変数はruby_init_loadpath_safe() in ruby.cで使用され、実際のロードパスはプロセスで設定されます。

あなたの質問への答えは、初期ロードパスがコンパイル時に、いくつかの#defineで設定されていることです。

0

あなたのコンパイルは、それが一般的である

/usr/lib/ruby/X.Y.Z 

X.Y.ZがあなたのルビーC APIバージョンのバージョン番号を表します* nixのベースのシステム上のlibディレクトリ を作成します。私のマシン上で

+0

いいえ、バージョン番号はRuby C APIバージョンを表します –

関連する問題