2010-11-19 120 views
1

版本0.4.1的declarative_authorization gem将rails> = 2.1.0作为依赖项。如果你先安装rails 2.3.5,然后安装0.4.1的declarative_authorization,你会得到Rails 3的依赖关系。如果declarative_authorization需要rails> = 2.1.0,如果安装了2.3.5,那么依赖关系应该被满足,对吧?是什么导致所有其他宝石被安装?这是一个rubygems错误?安装declarative_authorization安装rails 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

当您使用>=为 gem指定版本号时,Rubygems将始终尝试获取该gem的最新和最大值,而不管该依赖项是否已满足。这不是一个错误,而是一个预期的行为。为了解决这个问题,创业板作者应指定创业板做这个取决于梁2的任何版本:

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

总之,这是创业板作者的错,不是RubyGems的。

+0

感谢您的回答瑞安。 > =的行为似乎对我来说很奇怪。但是,这是另一个问题。为什么不安装更新版本的导轨?它安装了rails 3的依赖关系,但没有安装实际的rails 3 gem。那是预期的行为? – pjb3 2010-11-20 00:42:47

0

这是令人费解的。

这可能是declarative_authorization gem依赖于其他一些错误地依赖于rails3的gem。我注意到一个开始使用ActiveSupport 3的新功能的创业板,这打破了整个产业链。