Я только что столкнулся с этой проблемой снова. После некоторой отладки я пришел к такому выводу: эта странная ошибка означает, что у Rails есть некоторые проблемы с требованием какой-то конкретной библиотеки. Проблема в том, что Rails не сообщает нам, какая библиотека вызывает проблему. Итак, первый шаг, который вы должны сделать, это:
Откройте этот файл (или соответствующий файл в вашей установке):
/u/app/releases/20100213003957/vendor/rails/activesupport/lib/active_support/dependencies.rb
и отредактируйте метод load_with_new_constant_marking
, чтобы он выглядел следующим образом:
def load_with_new_constant_marking(file, *extras) #:nodoc:
if Dependencies.load?
Dependencies.new_constants_in(Object) { load_without_new_constant_marking(file, *extras) }
else
load_without_new_constant_marking(file, *extras)
end
rescue Exception => exception # errors from loading file
puts "FAILS HERE: " + file
exception.blame_file! file
raise
end
С этого момента, когда вы запускаете ваше приложение или задачу rake, вместо того, чтобы просто сказать вам, что оно «не может удалить Object :: ClassMethods», Rails скажет вам, какой файл вызывает проблему (просто посмотрите выражение «FAILS HERE» ). (Между прочим. Я полагаю, что именно этим и должен заниматься метод exception.blame_file!
, но он явно не работает таким образом.)
После того, как вы нашли файл, который вызывает проблему, вы можете покопаться в этом конкретном чанке и использовать несколько исключительных блоков, чтобы добраться до сути проблемы.
Надеюсь, это поможет.