Ошибка с перезаписью класса Ruby проявляется только в производстве? - PullRequest
1 голос
/ 23 июля 2010

Недавно я столкнулся со странной ошибкой, которая произошла только в производственном режиме.

Я использовал пути к гему славы, который определяет класс 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, если мы назвали его достижением.класс, мы переопределили класс. Поскольку наше переопределение не включало уровень, при развертывании в производство мы столкнулись с ошибкой, что уровень был неопределенным методом.

Вопрос в том, почему эта ошибка не проявляласьсам в режиме разработки? Драгоценный камень и классы были одинаковыми в обоих.

Есть идеи?

1 Ответ

1 голос
/ 23 июля 2010

Если вы не поместили в пространство имен или не удалили константу, то вы действительно все еще открыли класс, или ваш был сначала определен, а затем вновь открыт гемом..

...