Я видел, как эта проблема возникает в самых разных обстоятельствах, и хотел бы получить рекомендации по ее исправлению / отладке в StackOverflow.
Чтобы использовать пример из реального мира, это произошло со мной сегодня утром:
expected announcement.rb to define Announcement
Класс отлично работал при разработке, тестируя и с производственной консоли, но не получился в производственном Mongrel. Вот класс:
class Announcement < ActiveRecord::Base
has_attachment :content_type => 'audio/mp3', :storage => :s3
end
Проблема, на которую я хотел бы обратить внимание в ответах, заключается не столько в том, чтобы решить эту конкретную проблему, а в том, как правильно отладить, чтобы Rails выдал значимую ошибку, как ожидалось, x.rb для определения X.rb 'часто красный сельдь ...
Редактировать (пока 3 отличных ответа, каждое с частичным решением )
Debugging:
От Джо Ван Дейка: попробуйте получить доступ к модели через консоль в среде / экземпляре, которая вызывает ошибку (в случае выше: создание сценария / консоли, затем введите «Объявление».
От Отто: Попробуйте установить минимальный набор плагинов через инициализатор, например: config.plugins = [: exception_notification,: ssl_requirement,: all], затем включите по одному за раз.
Конкретные причины:
От Иана Террелла: если вы используете attachment_fu, убедитесь, что у вас установлен правильный процессор изображений. attachment_fu потребует его, даже если вы не прикрепляете изображение.
От Отто: убедитесь, что вы не назвали модель, которая конфликтует со встроенным классом Rails, например: Request.
От Джоша Льюиса: убедитесь, что у вас нет дублированных имен классов или модулей в вашем приложении (или списке драгоценных камней).