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