NoMethodError:未定义的方法`spec'对于nil:NilClass - active_utils,factory_girl和更多宝石失败

时间:2015-11-16 10:46:59

标签: ruby-on-rails rubygems

无处不在,并且没有改变任何东西,我已经开始出现这个错误(团队中的其他人也是如此)。

对于某些宝石(指定git分支的宝石)会发生这种情况,并且仅在我们重新创建环境时(在vagrant中)才会发生。我们没有改变任何事情。

有什么想法吗?更多信息如下:

Using active_utils (2.0.0) from git://github.com/Shopify/active_utils.git (at v2.0.0)
NoMethodError: undefined method `spec' for nil:NilClass
An error occurred while installing active_utils (2.0.0), and Bundler cannot continue.
Make sure that `gem install active_utils -v '2.0.0'` succeeds before bundling.

Using factory_girl (2.6.5) from https://github.com/thoughtbot/factory_girl (at 2.6.x)
NoMethodError: undefined method `spec' for nil:NilClass
An error occurred while installing factory_girl (2.6.5), and Bundler cannot continue.
Make sure that `gem install factory_girl -v '2.6.5'` succeeds before bundling.
  • 运行" gem install active_utils -v' 2.0.0'"工作但总是捆绑 失败。
  • 清除了宝石缓存,但没有帮助

似乎它是Gemfile中指定开始失败的分支的所有条目。

gem 'active_utils', :git => 'git://github.com/Shopify/active_utils.git', :branch => 'v2.0.0'
gem "will_paginate", :git => "git://github.com/mislav/will_paginate.git", :branch => "2-3-stable"

2 个答案:

答案 0 :(得分:13)

所以,事实证明这是因为最近升级到RubyGems引起的。强制使用以前的版本。

gem update --system 2.4.8

答案 1 :(得分:4)

虽然已经接受了答案,但我遇到了同样的问题。

最终,原因是我使用过时的捆绑版本并更新到最新版本修复它。有关此处错误的更多信息:https://github.com/bundler/bundler/issues/3560

错误发生在bundler 1.9.3之前。

您可以通过运行gem install bundler来更新捆绑包 然后通过gem uninstall bundler -v old.bundler.version

删除旧捆绑包版本

如果您正在使用rvm,我建议您在安装之前运行rvm use @global,在当前ruby版本的全局gemset上安装它。