Bundle说gem丢失了 – 但事实并非如此?

背景

我正在维护Ruby On Rails站点的内容 ,但我真的没有使用rails的经验。

当试图运行rails服务器时: rails s我得到了这个:

无法在任何来源中找到activesupport-3.2.0

运行bundle install以安装缺少的gem

我运行bundle install

Gem :: InstallError:factory_girl需要Ruby版本> = 1.9.2。 安装factory_girl(3.2.0)时发生错误,Bundler无法继续。

在捆绑之前确保gem install factory_girl -v '3.2.0'成功。

好的按照说明安装factory_girl:

已成功安装factory_girl-3.2.0 1 gem

再次运行bundle install:

Gem :: InstallError:factory_girl需要Ruby版本> = 1.9.2。 安装factory_girl(3.2.0)时发生错误,Bundler无法继续。 在捆绑之前确保gem install factory_girl -v '3.2.0'成功。

抓头并在StackOverflow上寻求帮助。 你有什么主意吗? 任何帮助深表感谢。

信息

昨天我在尝试运行rails服务器时出现了交叉错误。 所以根据这个SO建议我建议我已经修改了RVM并安装了rbenv和bundler而不是RVM。

我试过Ruby 1.9.3-p125和1.9.3-rc1

gem list输出显示factory_girl已安装。

  • factory_girl(3.2.0)

gem environment输出显示问题可能与ruby 1.9.1同时安装了吗?

RubyGems环境:
– RUBYGEMS版本:1.8.10
– RUBY VERSION:1.9.3(2011-09-23 patchlevel -1)[x86_64-darwin11.3.0]
– 安装目录:/Users/andreas/.rbenv/versions/1.9.3-rc1/lib/ruby/gems/1.9.1
– RUBY EXECUTABLE:/Users/andreas/.rbenv/versions/1.9.3-rc1/bin/ruby
– EXECUTABLE目录:/Users/andreas/.rbenv/versions/1.9.3-rc1/bin
– RUBYGEMS PLATFORMS:
– ruby
– x86_64-darwin-11
– 创业板路径:
– /Users/andreas/.rbenv/versions/1.9.3-rc1/lib/ruby/gems/1.9.1
– /Users/andreas/.gem/ruby/1.9.1
– 创业板配置:
– :update_sources => true
– :verbose => true
– :benchmark => false
– :backtrace => false
– :bulk_threshold => 1000
– “gem”=>“ – no-ri –no-rdoc”
– 远程来源:
– http://rubygems.org/

任何帮助深表感谢。

@jdoe在评论中回答。 它奏效了。 显然我需要删除Gemfile.lock

我不知道为什么或怎么样。 我只是在这里张贴这个,直到@jdoe出现并用真实答案收集他的分数。

尝试使用以下命令重新安装所有gem

 bundle install --force 

首先要做的事 – 我没有rbenv的经验。

RVM的一个好处是它有助于明确说明Ruby环境的移动部分是什么。

rvm列表会给你一个Rubies列表 rvm gemset list会给你一个gemsets列表(如果使用bundler这不应该是必需的)

现在,这里有一些棘手的事情:

  • Bundler使用Gemfile来确定要安装的内容
  • 如果没有指定任何内容,Bundler将尝试安装最新版本的gem
  • 如果gem的最新版本与您当前的Ruby不兼容,那么……
    • 您可以更改Ruby的版本(例如rvm install 1.9.3
    • 您可以告诉Gemfile以不同的严格程度指定所需的gem版本。
      • 你能说出我喜欢缩进的要点吗?
      • gem“vcr”,“〜> 1.11.3”#=>这会说你更喜欢1.11.3但1.11范围内的任何东西都可以接受
      • gem’factory_girl’,’3.2.0’#=>这就是说,只安装了factory_girl的版本3.2.0,没别的

此外,在其他任何事情之前,您应该运行捆绑检查以查看捆绑商有关您的gem的说法。

确保你安装的所有gem都在Gemfile中,因为如果gem没有添加到Gemfile中,即使你手动安装它,你的Rails应用程序也没有得到它:)

示例Gemfile将是

 gem 'rails', '3.0.0' gem 'mysql2', '< 0.3' gem 'rails3-jquery-autocomplete' #authorization gem 'authlogic' gem 'hoptoad_notifier' #reporting gem 'lazy_high_charts' group :test do gem 'rspec', '2.0.0' gem 'rspec-rails', '2.0 ' gem "test-unit" end 

干杯

你试过这个吗?

 bundle exec rails s