Bundle说宝石丢失了 - 但事实并非如此?

时间:2012-05-02 12:40:26

标签: ruby-on-rails ruby rubygems rbenv

背景

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

尝试运行Rails服务器时:rails s我明白了:

  

在任何来源

中找不到activesupport-3.2.0      

运行bundle install以安装缺少的宝石

我运行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个宝石

再次运行bundle install:

  

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

你有什么想法吗?

信息

昨天我在尝试运行rails服务器时出现了交叉错误。所以根据this SO advice我建议我已经修改了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
     - 可执行目录:/Users/andreas/.rbenv/versions/1.9.3-rc1/bin
     - RUBYGEMS PLATFORMS:
       - 红宝石
       - 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 =>真正
        - :verbose =>真正
        - :benchmark =>假
        - :backtrace =>假
        - :bulk_threshold => 1000
        - “gem”=> “--no-ri --no-rdoc”
     - 远程来源:
        - http://rubygems.org/

5 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

bundle install --force

答案 2 :(得分:0)

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

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

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

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

  • Bundler使用Gemfile来确定要安装的内容
  • 如果未指定任何内容,Bundler将尝试安装最新版本的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'#=>这说,只安装版本3.2.0的factory_girl,没有别的

此外,在其他任何事情之前,您应该运行捆绑检查以查看捆绑商对您的宝石的评价。

答案 3 :(得分:0)

你试过这个吗?

bundle exec rails s

答案 4 :(得分:0)

确保您安装的所有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