【问题标题】:Installing Factory Girl 3.3 with bundle results in Ruby Version error使用捆绑包安装 Factory Girl 3.3 会导致 Ruby 版本错误
【发布时间】:2012-05-29 00:47:32
【问题描述】:

我在 Ubuntu 12.04 64 位上使用 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

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

【问题讨论】:

  • 或许可以试试gem 'factory_girl'
  • 刚刚尝试过并确实得到了同样的错误,我的 gemfile.lock 重要吗?如果需要,我可以将其作为要点发布
  • 如果我指定像 2.3.2 这样的旧版本,看起来它可以工作,但我想使用最新的。
  • 我刚刚用 RVM 试了一下,效果很好。尝试使用 RVM 安装,如果确实安装了,那么问题可能是 rbenv + bundler + factory_girl 彼此不友好。
  • 好主意,我现在就试试

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


【解决方案1】:

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

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

/usr/lib/ruby/vendor_ruby

gem 可执行文件位于:

/usr/bin

这似乎是由Ubuntu 12.04 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 配置“点文件”(~/.bash_profile~/.bashrc 等),以便在键入 ruby 或 @ 时987654340@,或任何您的 ruby​​gems 可执行命令,例如 rakebundle,您实际上正在运行您的 rbenv 托管 ruby​​,而不是默认的系统提供的 ruby​​。这最终是通过将您的rbenv“shims”目录 (~/.rbenv/shims) 放在您通常的 $PATH 目录之前的路径中来完成的(并且记住在安装新的 ruby​​ 版本或新的 gem 之后运行 rbenv rehash)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    相关资源
    最近更新 更多