ruby-on-rails - 安装带有 bundle 的 Factory Girl 3.3 会导致 Ruby 版本错误

标签 ruby-on-rails ruby rubygems factory-bot rbenv

我在 Ubuntu 12.04 64 位上使用 bundle install 安装 factory girl 时出现错误

Installing factory_girl (3.3.0) /usr/lib/ruby/vendor_ruby/1.8/rubygems/installer.rb:388:in `ensure_required_ruby_version_met': factory_girl requires Ruby version >= 1.9.2. (Gem::InstallError)
from /usr/lib/ruby/vendor_ruby/1.8/rubygems/installer.rb:156:in `install'
from /usr/lib/ruby/vendor_ruby/bundler/source.rb:101:in `install'
from /usr/lib/ruby/vendor_ruby/bundler/rubygems_integration.rb:78:in `preserve_paths'
from /usr/lib/ruby/vendor_ruby/bundler/source.rb:91:in `install'
from /usr/lib/ruby/vendor_ruby/bundler/installer.rb:58:in `run'
from /usr/lib/ruby/vendor_ruby/bundler/rubygems_integration.rb:93:in `with_build_args'
from /usr/lib/ruby/vendor_ruby/bundler/installer.rb:57:in `run'
from /usr/lib/ruby/vendor_ruby/bundler/spec_set.rb:12:in `each'
from /usr/lib/ruby/vendor_ruby/bundler/spec_set.rb:12:in `each'
from /usr/lib/ruby/vendor_ruby/bundler/installer.rb:49:in `run'
from /usr/lib/ruby/vendor_ruby/bundler/installer.rb:8:in `install'
from /usr/lib/ruby/vendor_ruby/bundler/cli.rb:222:in `install'
from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor/task.rb:22:in `send'
from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor/task.rb:22:in `run'
from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor.rb:246:in `dispatch'
from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor/base.rb:389:in `start'
from /usr/bin/bundle:13

这是我的 Ruby -v

ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

我正在使用 RBenv,这里是命令的结果:rbenv version

1.9.3-p194 (set by /home/user/.rbenv/version)

这里是命令的结果:rbenv versions

1.9.2-p290
* 1.9.3-p194 (set by /home/user/.rbenv/version)

这是我的 gemfile 中的 factory_girl_rails

group :test do
 gem 'factory_girl_rails', '~> 3.3.0'
end

如果您需要查看更多文件,请告诉我,我很乐意发布它们。任何人都知道我为什么

最佳答案

问题不是 rbenv 不工作或与任何东西冲突,而是你实际上没有正确设置它。

我注意到的第一件事是您的 gem 安装位置在:

/usr/lib/ruby/vendor_ruby

在 gem 可执行文件中:

/usr/bin

这似乎是 Ubuntu 12.04 提供的“系统 ruby ” ruby package ,安装时安装:

sudo apt-get install ruby

因此,即使您安装了 rbenv,您实际上并没有使用它并且尝试安装 gems 失败了。具体来说,您实际运行的 ruby​​ 是 Ubuntu 系统 ruby​​ 版本 1.8.7,如以下行所示:

/usr/lib/ruby/vendor_ruby/1.8/rubygems/installer.rb:388:in `ensure_required_ruby_version_met': factory_girl requires Ruby version >= 1.9.2. (Gem::InstallError)

简而言之,该错误准确地告诉您问题出在哪里 - factory_girl 需要 ruby​​ 1.9.2 或更高版本,并且您没有运行足够新的版本。

因此,要解决此问题,您需要根据rbenv install instructions这样当您键入 rubygem 或任何您的 ruby​​gems 可执行命令时,例如 rakebundle您实际运行的是 rbenv 管理的 ruby​​,而不是系统提供的默认 ruby​​。这最终是通过将您的 rbenv“shims”目录 (~/.rbenv/shims) 放在您通常的 $PATH 目录之前的路径中来实现的(并记得在安装新的 ruby​​ 版本或新的 gems 后运行 rbenv rehash)。

然后,一旦您正确配置了 rbenv,您就可以利用使用 rbenv local 创建的目录中的 .rbenv-version 文件。命令。

关于ruby-on-rails - 安装带有 bundle 的 Factory Girl 3.3 会导致 Ruby 版本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10791873/

相关文章:

ruby-on-rails - 如何在 Ruby on Rails 中声明一个全局变量?

javascript - 使用 .js.erb

ruby - Maruku告诉你: what's wrong with me?

ruby - 快速FTP服务器

ruby-on-rails - Varnishd 是用于 Rails 的正确缓存解决方案吗?

ruby-on-rails - 第一个 Ruby on Rails 应用程序 : use v3 (Beta) or 2. 3?

html - 用于 Objective-C 语法高亮显示的 Ruby 库

ruby - 需要所有数据库的文件 :migrate?

ruby-on-rails - 在 osx 上为 ruby​​ on Rails 项目安装 qrencoder gem

ruby-on-rails - cucumber 找不到已安装的 gem