【问题标题】:ERROR: While executing gem ... (NoMethodError) undefined method `spec' for nil:NilClass错误:在执行 gem 时 ... (NoMethodError) 未定义的方法 `spec' 用于 nil:NilClass
【发布时间】:2011-11-29 01:05:28
【问题描述】:

我正在尝试开始使用 ruby​​ 和 Watir-webdriver 进行一些测试自动化。

sudo apt-get install ruby rubygems

sudo gem install watir-webdriver

每当我安装 gem 时,我都会收到以下错误:

[/usr/lib/ruby/gems/1.8/specifications/selenium-webdriver-2.13.0.gemspec] isn't a Gem::Specification (NilClass instead).
ERROR:  While executing gem ... (NoMethodError)
    undefined method `spec' for nil:NilClass

【问题讨论】:

  • 顺便说一句:如果您是 Ruby 新手,并且主要将其用于脚本编写和自动化,我强烈推荐 Brian Marick 的“Everyday Scripting with Ruby”作为入门的好书。您可以直接从 Pragmatic Programmers 以相当合理的价格以电子书格式获得它。还可以看看 Zeljko Filipin (github.com/zeljkofilipin/watirbook/downloads) 的(正在进行中的)“Watir Book”,它目前是免费的(但我相信作者不会拒绝捐款,尤其是那些刚接触 Watir 的人的反馈和红宝石)

标签: ruby ubuntu rubygems watir-webdriver apt


【解决方案1】:

问题是由于损坏的下载存储在缓存中,因此即使在gem uninstall 并重新安装后,错误仍然存​​在。为了强制重新下载,我清空了通过在命令gem env 的输出中检查 GEM PATHS 下找到的缓存目录。

【讨论】:

  • 如果这解决了问题,您应该接受您的回答。如果您还没有这样做,我会建议您研究 RVM,它使管理 ruby​​ 和 gems 等版本变得更加容易。当需要升级 ruby​​ 语言或与其他 gem 有很多依赖关系的特定 gem 时,它也使事情变得更容易。
  • +1,如果您收到 gemspecs 警告,规范也是空的。
【解决方案2】:

您应该尝试使用 Ruby 1.9.x

最简单的方法是使用 RVM:

sudo apt-get install git
bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session.
rvm install 1.9.2
rvm use 1.9.2
gem install watir-webdriver

【讨论】:

  • 我在使用你的脚本时遇到了类似的错误:'ERROR: While executing gem ... (NoMethodError) undefined method 'spec' for nil:NilClass'
  • 不要使用 sudo 安装您希望与 RVM 管理的 Ruby 一起使用的 gem。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
  • 2013-02-17
  • 2014-03-16
  • 1970-01-01
  • 2013-11-14
  • 2013-01-14
相关资源
最近更新 更多