冲突的依赖性

时间:2014-06-17 10:27:30

标签: ruby-on-rails

我有一个冲突的依赖:

Gem A depends on Gem B 2.0

但是

Gem C depends on Gem B 1.5

我应该这样强迫:

gem 'B', '~> 1.5' 

我的所有其他宝石都使用Gem B 2.5(后期版本)没有问题,所以我可以在我的Gemfile中做这样的事情吗?:

gem 'B' # 2.5

gem 'A', dependency: 'b 2.0'
gem 'C', dependency: 'b 1.5'

# gems happily use B 2.5

更新,我的确切问题:

rails-observers(>=0) ruby
   activemodel(~> 4.0)

jquery-scrollto-rails(>=) ruby
   activemodel(~> 3.1.0)

我的gemfile根本没有包含任何依赖项。没有版本号选项。

bundle install

完成没问题但是

bundle update

导致上面的错误

1 个答案:

答案 0 :(得分:0)

在github上fork jquery-scrollto-rails并升级版本。运行它的测试套件。如果它运行了一个pull请求,直到它被接受,请使用你的github版本。

如果它没有运行,那么 -

不要抱怨,修复;)

修改

他们有一个更新版本支持铁路3<五 将其添加到您的Gemfile

 gem 'jquery-scrollto-rails', '~> 1.4.3'

然后运行$ bundle install

请参阅rubygems

注意:

我建议您始终在Gemfile中使用版本规范。最乐观的策略就是将它们固定到次要版本,例如gem 'jquery-scrollto-rails', '~> 1.4'。这对bundler来说是一个巨大的帮助,它有一个np-complete问题需要解决。理论上,根据Semver,对次要版本更新不应有任何不兼容的更改,您可以通过运行$ bundle update来解决问题。很多宝石确实遵循这个惯例,但有黑色的