3

背景

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

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

在任何来源中都找不到 activesupport-3.2.0

运行bundle install以安装缺少的 gem

我运行捆绑安装

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 安装

再次运行捆绑安装:

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

你有什么主意吗?

信息

昨天我在尝试运行 rails server 时遇到交叉错误。因此,按照这个 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 版本:1.9.3(2011-09-23 补丁级别 -1)[x86_64-darwin11.3.0]
- 安装目录:/Users/andreas/.rbenv/versions/1.9。 3-rc1/lib/ruby/gems/1.9.1
- RUBY 可执行文件:/Users/andreas/.rbenv/versions/1.9.3-rc1/bin/ruby
- 可执行目录:/Users/andreas/.rbenv/versions/ 1.9.3-rc1/bin
- RUBYGEMS 平台:
- ruby
​​ - x86_64-darwin-11
- GEM 路径:
- /Users/andreas/.rbenv/versions/1.9.3-rc1/lib/ruby/gems/1.9.1
- /Users/andreas/.gem/ruby/1.9.1
- GEM 配置:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- "gem" => "--no-ri --no-rdoc"
- 远程资源:
- http://rubygems.org/

4

5 回答 5

3

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

bundle install --redownload
于 2018-08-28T05:39:49.957 回答
2

你试过这个吗?

bundle exec rails s
于 2012-05-02T14:03:31.570 回答
2

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

我不知道为什么或如何。我只是在这里发布这个,直到@jdoe 出现并用一个真实的答案收集他的分数。

于 2012-05-02T14:09:34.787 回答
0

首先,我没有使用 rbenv 的经验。

RVM 的优点之一是它有助于相当明确地说明 Ruby 环境的移动部分是什么。

rvm list会给你一个红宝石列表 rvm gemset list会给你一个 gemsets 列表(如果使用捆绑器,这应该不是必需的)

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

  • 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 版本,没有别的

此外,在其他任何事情之前,您应该运行bundle check以查看 bundler 对您的 gem 有什么看法。

于 2012-05-02T14:00:34.367 回答
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
于 2012-05-02T14:22:55.763 回答