由于捆绑程序版本冲突,无法激活rails 3.0.1

时间:2012-06-12 19:21:12

标签: ruby-on-rails gem bundler

所以我跑:

$ gem install rails --version 3.0.1

Successfully installed rails-3.0.1
1 gem installed
Installing ri documentation for rails-3.0.1...
Installing RDoc documentation for rails-3.0.1...

然后我收到错误:

$ rails -v
/usr/local/rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:1637:in `raise_if_conflicts': Unable to activate rails-3.0.1, because bundler-1.1.4 conflicts with bundler (~> 1.0.0) (Gem::LoadError)
from /usr/local/rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:746:in `activate'
from /usr/local/rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems.rb:1232:in `gem'
from /usr/local/rvm/gems/ruby-1.9.3-p125@rails3tutorial/bin/rails:18:in `<main>'
from /usr/local/rvm/gems/ruby-1.9.3-p125@rails3tutorial/bin/ruby_noexec_wrapper:14:in `eval'
from /usr/local/rvm/gems/ruby-1.9.3-p125@rails3tutorial/bin/ruby_noexec_wrapper:14:in `<main>'

4 个答案:

答案 0 :(得分:8)

所以Rails 3.0.1需要Bundler v1.0.0 - v1.0.22(实际上任何1.0.x版本,但不包括1.1.0),但你有更新版本的Bundler当Rails启动时正在加载。您可以卸载Bundler的较新版本(虽然这是处理问题的一种糟糕的方法),或者因为您正在使用RVM,只需为Rails 3.0.1创建一个gemset。

$ rvm gemset create rails_3.0.1
$ rvm gemset use rails_3.0.1
$ gem install rails -v 3.0.1
$ rails -v
3.0.1

注意:这要求Bundler不在您尝试使用的Ruby版本的global gemset中。如果global gemset包含的Bundler版本等于或高于1.1.0,那么您将得到与以前相同的错误。

更新:关于~>和RubyGems版本控制的一点解释可能很方便。 RubyGems文档中的section on pessimistic version constraint在覆盖所有内容方面做得非常出色。

答案 1 :(得分:3)

您可能需要更新到bundler 1.1.4。

gem update bundler

应该这样做。

答案 2 :(得分:2)

这可能是由于Ruby v1.9.2 / 3使用的是bundler v1.1.4,而Rails v3.0.1则需要使用bundler v~1.0.0。因此,只需将Rails版本更新为v3.2.6,就可以解决冲突。通过匹配Ruby和Rails版本可以轻松解决这种冲突。

答案 3 :(得分:1)

我遇到了与mysql相同的问题。我卸载了mysql gem并安装了最新版本的mysql gem。 RVM好吗?