Недавно я столкнулся со странной ошибкой, которая произошла только в производственном режиме.
Я использовал пути к гему славы, который определяет класс Achievement (http://github.com/paulca/paths_of_glory/blob/master/app/models/achievement.rb).
В базовом классе, уровень определен:
def level(level, options = {})
levels << {:level => level, :quota => options[:quota]}
end
Путь драгоценного камня славы работает, когда вы создаете модели, которые наследуются от базовой модели достижений.
В попытке добавить дополнительный метод в базуКласс Achievement, мы (ошибочно, в ретроспективе) создали новый файл models / aachievements.rb (да, преднамеренная ошибка правописания, поскольку Rails попытается загрузить файл Achievement, если мы назвали его достижением.класс, мы переопределили класс. Поскольку наше переопределение не включало уровень, при развертывании в производство мы столкнулись с ошибкой, что уровень был неопределенным методом.
Вопрос в том, почему эта ошибка не проявляласьсам в режиме разработки? Драгоценный камень и классы были одинаковыми в обоих.
Есть идеи?