2012-05-31 2 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 

무장, 루비 소스에 대한 조사 definition of ruby_initial_load_paths[] in version.c 리드 (이것은 루비 1.9.3에있다). 적용되는 첫 번째 항목 (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 버전을 나타냅니다. –

관련 문제