2010-11-19 7 views
1

declarative_authorization gem의 버전 0.4.1에 종속 파일로 레일스가 2.1.0 이상 있습니다. 먼저 레일 2.3.5를 설치 한 다음 0.4.1의 declarative_authorization을 설치하면 Rails 3의 종속성이 생깁니다. declarative_authorization에 레일> = 2.1.0이 필요한 경우 2.3.5가 설치되어 있으면 해당 종속성을 만족해야합니다. 다른 보석들을 모두 설치하게 된 이유는 무엇입니까? 루비 젬 버그인가요?declarative_authorization을 설치하면 레일스 3의 종속성이 설치됩니다.

$ ruby -v 
ruby 1.8.7 (2010-04-19 patchlevel 253) [i686-darwin10.4.0], MBARI 0x6770, Ruby Enterprise Edition 2010.02 

$ gem -v 
1.3.7 

$ gem install rails -v 2.3.5 
Successfully installed rake-0.8.7 
Successfully installed activesupport-2.3.5 
Successfully installed activerecord-2.3.5 
Successfully installed rack-1.0.1 
Successfully installed actionpack-2.3.5 
Successfully installed actionmailer-2.3.5 
Successfully installed activeresource-2.3.5 
Successfully installed rails-2.3.5 
8 gems installed 

$ gem install declarative_authorization -v 0.4.1 
Successfully installed declarative_authorization-0.4.1 
Successfully installed activesupport-3.0.3 
Successfully installed builder-2.1.2 
Successfully installed i18n-0.4.2 
Successfully installed activemodel-3.0.3 
Successfully installed rack-1.2.1 
Successfully installed rack-test-0.5.6 
Successfully installed rack-mount-0.6.13 
Successfully installed tzinfo-0.3.23 
Successfully installed abstract-1.0.0 
Successfully installed erubis-2.6.6 
Successfully installed actionpack-3.0.3 
Successfully installed arel-2.0.4 
Successfully installed activerecord-3.0.3 
Successfully installed activeresource-3.0.3 
Successfully installed mime-types-1.16 
Successfully installed polyglot-0.3.1 
Successfully installed treetop-1.4.9 
Successfully installed mail-2.2.10 
Successfully installed actionmailer-3.0.3 
Successfully installed thor-0.14.4 
Successfully installed railties-3.0.3 
Successfully installed bundler-1.0.7 
23 gems installed 

$ gem dependency declarative_authorization 
Gem declarative_authorization-0.4.1 
    rails (>= 2.1.0, runtime) 

답변

0

보석에 >=을 사용하여 버전 번호를 지정하면 Rubygems는 종속성이 이미 충족되었는지 여부에 관계없이 항상 해당 보석에 대해 가장 최신의 멋진 항목을 얻으려고합니다. 이것은 버그는 아니지만 오히려 예상되는 동작입니다. 이 문제를 해결하려면, 보석 작성자는 보석이 작업을 수행하여 레일 2의 모든 버전에 따라 지정해야합니다

요약
s.add_dependency 'rails', '~> 2' 

,이 보석 저자의 잘못이 아니라 젬입니다.

+0

답변 해 주셔서 감사합니다. > =의 행동은 나에게 이상한 것처럼 보입니다. 그래도 또 다른 질문이 있습니다. 왜 새로운 버전의 레일이 설치되지 않습니까? 레일 3의 종속물을 설치했지만 실제 레일 3 보석은 설치하지 않았습니다. 그것은 예상 된 행동인가? – pjb3

0

이것은 수수께끼입니다.

declarative_authorization gem은 실수로 rails3에 의존하는 다른 보석에 의존 할 수 있습니다. ActiveSupport 3의 새로운 기능을 사용하기 시작한 보석이 전체 체인을 무너 뜨린 것으로 나타났습니다.

관련 문제