代码之家  ›  专栏  ›  技术社区  ›  pjb3

安装声明性授权将安装rails 3的依赖项

  •  1
  • pjb3  · 技术社区  · 14 年前

    声明性授权gem的0.4.1版将rails>=2.1.0作为依赖项。如果您先安装rails 2.3.5,然后安装声明性授权的0.4.1,您将获得rails 3的依赖项。如果声明式_授权需要rails>=2.1.0,如果安装了2.3.5,则应该满足该依赖关系,对吗?是什么原因导致安装了所有其他gems?这是rubygems病毒吗?

    $ 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)
    
    2 回复  |  直到 14 年前
        1
  •  0
  •   Ryan Bigg Andrés Bonilla    14 年前

    使用指定版本号时 >= 为了一个 gem,Rubygems总是试图为gem获取最新的和最好的,不管依赖性是否已经满足。这不是一个bug,而是预期的行为。要解决这个问题,gem作者应该指定gem依赖于Rails 2的任何版本,方法是:

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

    总之,这是gem作者的错,不是Rubygems。

        2
  •  0
  •   Neeraj Singh    14 年前

    这令人费解。

    可能是声明性授权gem依赖于某些其他gem,而这些gem错误地依赖于rails3。我注意到一个gem开始使用ActiveSupport 3的一些新特性,这打破了整个链。