Rails / Gem команда неожиданно выдает ошибки - PullRequest
1 голос
/ 02 мая 2011

Я занимался кодированием на Ruby on Rails, запустив несколько методов генерации rails за последний час, когда неожиданно новая команда generate вызвала сообщение об ошибке. Похожая ошибка возникла, когда я попытался запустить свои тесты через грабли. А потом в командной строке просто "рельсы". И затем та же ошибка для команды "gem".

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

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

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

C:\Users\Ben>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

Файл My Gem (для проекта выше):

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

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

[EDIT] на этом этапе я полностью переустановил ruby ​​и rails, и проблема исчезла. Я сохранил старый каталог установки, на случай, если мы сможем добраться до сути этой проблемы, или если она повторяется!

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

C:\Users\Ben>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 Ответ

0 голосов
/ 05 мая 2011

Моя догадка была верна - виноват RubyMine ... и пользователь, конечно же!

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

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

...