3

我正在 Ubuntu 12.04 64bit 上安装带有 bundle install 的工厂女孩​​并且收到错误

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 版本

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

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

4

1 回答 1

3

问题不在于rbenv它不起作用或与任何东西发生冲突,而在于您实际上并没有正确设置它以正确使用它。

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

/usr/lib/ruby/vendor_ruby

带有 gem 可执行文件:

/usr/bin

这似乎是Ubuntu 12.04 rubypackage提供的“系统红宝石” ,在您执行以下操作时安装:

sudo apt-get install ruby

所以,即使你已经rbenv安装了,你实际上并没有使用它,并且尝试安装 gems 失败了。具体来说,您实际运行的 ruby​​ 是 Ubuntu 系统 ruby​​ version 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需要 ruby1.9.2​​ 或更高版本,并且您运行的版本不够新。

因此,要解决此问题,您需要根据安装说明~/.bash_profile配置“点文件”( ,~/.bashrc等),以便在您键入or或任何 ruby​​gems 可执行命令时,例如or ,您实际上是运行您的托管 ruby​​,而不是系统提供的默认 ruby​​。这最终是通过在您的常用目录之前的路径中放置您的“垫片”目录(rbenv rubygemrakebundlerbenvrbenv~/.rbenv/shims$PATHrbenv rehash

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

于 2012-05-29T20:04:13.047 回答