我在 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这样当您键入 ruby
或 gem
或任何您的 rubygems 可执行命令时,例如 rake
或 bundle
您实际运行的是 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/