为什么'捆绑更新'安装古老的宝石?

时间:2011-05-23 21:36:00

标签: ruby-on-rails rubygems bundler

一切都工作得很好,直到最后,捆绑更新决定'更新'某些宝石的一些非常旧的版本。有任何想法吗?我很困惑!

Gemfile没有为awry gems指定版本。例如

gem 'rails'

我做......

bundle update

和(!)...

Using rails (0.9.5)

如果我指定版本。例如

gem 'rails', '~> 3.0'

然后没关系。

Using rails (3.0.7)

来源'http://rubygems.org'

宝石版本1.8.3,rvm版本1.6.14

只有一些宝石是错误的。 mongoid是另一个。它是1.0.6。谢谢!

2 个答案:

答案 0 :(得分:6)

问题解决了。这是一场宝石冲突。我把它归结为......

只有这两个宝石:

gem 'rails'
gem 'i18n'

你得到i18n 0.6.0(最新版),但是rails是3.0.5(3.0.7是最新的)。

然后只有这三个:

gem 'rails'
gem 'i18n'
gem 'delayed_job'

你得到:

Gems included by the bundle:
  * actionmailer (0.6.1)
  * actionpack (1.4.0)
  * activerecord (1.6.0)
  * activesupport (3.0.7)
  * bundler (1.0.13)
  * daemons (1.1.3)
  * delayed_job (2.1.4)
  * i18n (0.6.0)
  * rails (0.9.5)  <-- Yikes! that brings back memories!
  * rake (0.9.0)

我没有深入研究Bundler的gem依赖关系是如何工作的,但这就是造成它的原因。有趣!当然,无论如何都不需要包含i18n gem,因此删除它会修复事物(或指定gem版本)。

答案 1 :(得分:0)

试试这个。

只需更新您的捆绑包,可能是任何一个较旧的宝石与最新宝石冲突,这类问题就会出现。

'gem install bundler'

然后'bundler install'

如果再次发现错误,请删除GEM.lock文件,然后运行bundler install。它可以解决这个问题。