2012-11-07 5 views
3

내 루비 버전을 확인 RBConfig를 사용하여, 나는 "잘못된"조그마한 버전을 : 루비 1.8.7 사용루비 1.9.3 꼬마 버전

# ruby -v 
ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux] 
# ruby -rrbconfig -e 'puts RbConfig::CONFIG.fetch(%q(MAJOR))' 
1 
# ruby -rrbconfig -e 'puts RbConfig::CONFIG.fetch(%q(MINOR))' 
9 
# ruby -rrbconfig -e 'puts RbConfig::CONFIG.fetch(%q(TEENY))' 
1 

-이 잘 작동을 :

$ ruby -v 
ruby 1.8.7 (2012-06-29 patchlevel 370) [x86_64-linux] 
$ ruby -rrbconfig -e 'puts Config::CONFIG.fetch(%q(MAJOR))' 
1 
$ ruby -rrbconfig -e 'puts Config::CONFIG.fetch(%q(MINOR))' 
8 
$ ruby -rrbconfig -e 'puts Config::CONFIG.fetch(%q(TEENY))' 
7 

은 내가 패치 레벨을 얻고 약간의 것을 사용할 수 있습니다 알고 있지만, 왜 그 조그만 버전으로 루비 돌아 1.9.3 1?

+1

'ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin10.8.0]'을 사용하고 있고'Config'와'RbConfig'를 사용하여 같은'TEENY' 오류가 발생합니다. – AGS

+0

1.9.3은 1.9.1을 기반으로하기 때문에 - 루비 1.9.2와 같지만 왜 그런지를 알 수있는 문서를 찾을 수 없습니다. 1.9.3을 제대로 확인하는 방법을 알고 싶습니다. 패치 나 개정을 확인해야합니까? – Michael

+0

링크 된 라이브러리가 여전히 버전 1.9.1로 루비를 사용하고 있기 때문에 누구나 확인할 수 있습니까? – Michael

답변

4

Ruby에는 실제 릴리스 버전과 "호환성 버전"의 두 가지 개념이 있습니다. 모든 Rubies 1.9.1 -> 1.9.3의 경우 호환 버전은 모두 1.9.1 릴리스와 호환되므로 모두 1.9.1입니다.

RUBY_VERSION 상수는 릴리스 버전 번호를 포함하고 있지만, 그 값이 당신에게 중요하다면 당신은 메이저, 마이너을 얻을 수있는 점을 분할해야하고, 조그만됩니다

>> major, minor, teeny = RUBY_VERSION.split(".") 
=> ["1", "9", "3"] 
>> teeny 
=> "3" 

말했다 즉, 루비 버전 숫자는 특히 ASCII-비교할 수 있도록 설계, 그래서 간단한 버전 확인을 위해 다음과 같은 코드를 참조하는 것이 일반적입니다됩니다 패치 수준 릴리스에는 API의 변화가 없기 때문에 만,

if RUBY_VERSION >= "1.9.3" 
    #... 
end 

패치 수준은 일반적으로 무시 될 수있다 버그 수정 및 보안 패치. 희망이 도움이됩니다!

+0

감사합니다 - 같은 결론에 도달했습니다. – Michael

1

미성년자 만이 미성년자 도서관에 신고 한 것 같습니다. 그래서 내가 남긴 것은 ruby_version 문자열입니다. 아무 것도없는 것보다 낫습니다.

# /usr/bin/ruby -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(LIBRUBY_SO))' 
libruby.so.1.9.1 
# /usr/bin/ruby -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(ruby_version))' 
1.9.3-p286 

루비 1.8 프로그램이 :

$ /usr/bin/ruby -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(LIBRUBY_SO))' 
libruby1.8.so.1.8.7 

와 루비 1.9.2-P320이 :

$ ruby -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(LIBRUBY_SO))' 
libruby.so.1.9.1 

그래서 나는 신비가 해결 같아요.

관련 문제