安装Rails时出现“NoMethod”错误

时间:2015-03-10 08:03:56

标签: ruby-on-rails

我是终端新手所以请耐心等待。我在安装Rails时遇到问题。我认为这是因为我打断了以前的安装。现在我一直遇到这个错误:

Error installing rails: invalid gem: package is corrupt, exception while verifying: undefined method 'size' for nil:NilClass (NoMethodError) in /usr/local/lib/ruby/gems/2.2.0/cache/mail-2.6.3.gem

我已卸载第一次安装中安装的gem,但错误仍然存​​在。我卸载的宝石是:

rails-deprecated_sanitizer (1.0.3)`
rails-dom-testing (1.0.5)
rails-html-sanitizer (1.0.1)
sprockets-rails (2.2.4)

编辑:此问题已由以下问题解决:rm /usr/local/lib/ruby/gems/2.2.0/cache/mail-2.6.3.gem并重新启动计算机。出错的原因是损坏的缓存文件。

2 个答案:

答案 0 :(得分:5)

This solution worked for me.

引用jensendarren的解决方案:

  

安装Rails 3时,我的电脑遭遇停电。后   重新启动计算机并继续安装Rails 3   进程因完全相同的错误而失败。问题是由于   gem安装缓存,其中包含已损坏/空的gem文件。我的解决方案   是清除此缓存并再次运行安装,如下所示:

     
      
  1. 使用gem env
  2. 找出缓存的位置   
  3. 列出该缓存中的所有宝石,例如ls -l /usr/lib/ruby/gems/1.8/cache/
  4.   
  5. 使用gem list
  6. 与成功安装的宝石进行比较   
  7. 从缓存列表中删除gem列表中缺少的gem,例如使用rm
  8.   
  9. 我还必须从规范目录ls -l /usr/lib/ruby/gems/1.8/specifications/中删除一些空/损坏的gemspec文件
  10.   
  11. 继续安装,例如sudo gem install -v=3.0.6 rails --no-rdoc --no-ri
  12.   

答案 1 :(得分:1)

使用gem env

找到缓存

使用

列出该缓存中的所有宝石
ls -l /usr/lib/ruby/gems/2.2.0/cache/

使用

与已安装的宝石进行比较
gem list

使用rm命令

从gem列表中删除gem列表中缺少的gem

使用

继续安装
gem install -v=version_u_want rails --no-rdoc --no-ri