gem和/或Ruby on Rails突然爆发,有人知道发生了什么吗?

Dav*_*ave 4 ruby macos rubygems

我有一个曾经工作的Ruby on Rails应用程序.我没有在一个月左右使用它,但然后试图用今天开始起来rails s,并得到了下面的错误-事实上,当我尝试我得到这个错误rails -h或者rails -v甚至gem -hsudo gem update --system或与做任何事情gem.

NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from /Library/Ruby/Gems/1.8/specifications/rubygems-update-1.8.2.gemspec:11.
Invalid gemspec in [/Library/Ruby/Gems/1.8/specifications/tilt-1.3.3.gemspec]: invalid date format in specification: "2011-08-25 00:00:00.000000000Z"
NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from /Users/me/.gem/ruby/1.8/specifications/json-1.5.1.gemspec:10.
/Library/Ruby/Site/1.8/rubygems/specification.rb:277:in `_resort!': undefined method `name' for nil:NilClass (NoMethodError)
    from /Library/Ruby/Site/1.8/rubygems/specification.rb:276:in `sort!'
    from /Library/Ruby/Site/1.8/rubygems/specification.rb:276:in `_resort!'
    from /Library/Ruby/Site/1.8/rubygems/specification.rb:270:in `_all'
    from /Library/Ruby/Site/1.8/rubygems/specification.rb:402:in `each'
    from /Library/Ruby/Site/1.8/rubygems/dependency.rb:216:in `find_all'
    from /Library/Ruby/Site/1.8/rubygems/dependency.rb:216:in `matching_specs'
    from /Library/Ruby/Site/1.8/rubygems/dependency.rb:238:in `to_specs'
    from /Library/Ruby/Site/1.8/rubygems/dependency.rb:256:in `to_spec'
    from /Library/Ruby/Site/1.8/rubygems.rb:1182:in `gem'
    from /usr/bin/rails:18
Run Code Online (Sandbox Code Playgroud)

任何人都知道发生了什么以及如何解决它?如何卸载所有内容并重新安装(无需卸载我的操作系统,真的很糟糕的人)

And*_*all 12

我试着通过运行来清理所有已安装的宝石

rm -rf ~/.gems
sudo rm -rf /Library/Ruby/Gems/*
Run Code Online (Sandbox Code Playgroud)

在此之后gem list应列出没有宝石.然后跑

sudo gem update --system
Run Code Online (Sandbox Code Playgroud)

确保Ruby Gems处于最新版本.然后,您将不得不重新安装所有宝石.(可能gem install bundler接着是bundle install).

顺便说一句,你应该检查rbenvrvm来管理Ruby版本,并将所有开发宝石与系统Ruby分开.

  • `sudo gem pristine --all`确实可以重建你的宝石,这也足够了. (2认同)