Команда Rails / Gem внезапно выдает ошибки

#ruby-on-rails #gem

#ruby-on-rails #rubygems

Вопрос:

Я был в разгаре разработки Ruby на Rails, запустив несколько методов генерации rails за последний час, когда внезапно новая команда генерации выдала сообщение об ошибке. Аналогичная ошибка возникла, когда я попытался запустить свои тесты через rake. А затем в командной строке просто «rails». А затем та же ошибка для команды «gem».

Итак, я предполагаю, что каким-то образом я сломал свой файл Gem «rubygems»? Что вызывает беспокойство, поскольку я кодировал на Rubymine и, честно говоря, даже близко не подходил к этому!

Кто-нибудь может помочь объяснить, что могло произойти, и каким может быть лучшее исправление? На данный момент я попробую переустановить Ruby, но это дорогостоящий обходной путь, который я бы не хотел выполнять более одного раза.

Трассировка стека ошибок выглядит следующим образом :

 C:UsersBen>rails
C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:127:in `load_gems_in':
private method `load' called for Gem::Specification:Class (NoMethodError)
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/deprecate.rb:38:in `skip_during'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:126:in `load_gems_in'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:125:in `each'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:125:in `load_gems_in'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:122:in `reverse_each'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:122:in `load_gems_in'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:321:in `refresh!'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:97:in `initialize'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:1051:in `new'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:1051:in `source_index'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:243:in `activate_dep'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:236:in `activate'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:1307:in `gem'
from C:/dev/lang/Ruby187/bin/rails:18
  

Мой файл Gem (для проекта выше) является:

 source 'http://rubygems.org'
gem 'rails', '3.0.7'
gem 'sqlite3'
gem "jquery-rails"
  

Хотя ошибка возникает во всех экземплярах командной строки.

[РЕДАКТИРОВАТЬ] на этом этапе я полностью переустановил ruby и rails, и проблема исчезла. Однако я сохранил старый каталог установки на случай, если мы сможем разобраться в этой проблеме, или на случай, если она повторится!

[ВТОРОЕ РЕДАКТИРОВАНИЕ] Новая установка, после перезагрузки компьютера, gem снова начал давать сбой, и RubyMine сообщает, что не может найти никаких драгоценных камней (даже rubygems) :

 C:UsersBen>gem
C:/dev/lang/Ruby187/lib/ruby/1.8/optparse.rb:1433:in `private': undefined method `search' for class `OptionParser' (NameError)
from C:/dev/lang/Ruby187/lib/ruby/1.8/optparse.rb:1433
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/command.rb:7
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:7
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:7
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from C:/dev/lang/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from C:/dev/lang/Ruby187/bin/gem:9
  

Может быть, RubyMine портит установку? Или Windows 7? Никогда не возникало проблем с повреждением моего основного языка разработки — очень расстраивает!

Комментарии:

1. команды rails и gem корректно работают в другой среде проекта? Можете ли вы создать новый проект rails в другом каталоге? Добавьте содержимое вашего Gemfile в текст вопроса.

2. Команды rails и gem не работают во всех средах (как через Rubymine, так и при вызове командной строки). Не удается выполнить НИЧЕГО, что связано с rails, поскольку все команды выдают ошибку, подобную приведенной выше.

Ответ №1:

Моя догадка оказалась верной — виноват RubyMine … и пользователь тоже, конечно!

Слишком привыкший к использованию инструментов рефакторинга в Intellij для Java, я изменил некоторые довольно распространенные имена методов в своих контроллерах (например, изменил «show» на «index») и в конечном итоге также провел рефакторинг в файлах стандартной библиотеки Ruby 1.8!

Нужно перепроверить, что делает рефакторинг в будущем, и попытаться ограничить его только моим проектом, а не всем SDK 🙂