Rails переходят с 2.2.2 на 2.3.8 - грабли не загружают среду так же, как консоль или мое приложение - PullRequest
0 голосов
/ 01 марта 2011

У меня есть приложение, которое я уже давно перехожу на Рельсы 2.3.8. Было много интересных вопросов, но я нахожусь на растянулись дома, но теперь мы столкнулись с очень странными ошибками.

Суть в том, что когда я запускаю задачу с помощью rake, она не работает, но когда я запускаю тот же код формы консоли, он работает нормально. «Исправление», которое я придумал, состояло в переместить мой include ModuleNameA, include ModuleNameB и т. д. в конец файл AR.

Мне не нравится это исправление, потому что я его не понимаю. Прежде чем я переехал их объект AR (мы будем называть его Бобом) продолжал бросать неопределенный метод ошибки при вызове через грабли. Было вызвано в грабли, но в другом объекте AR.

Таким образом, задача rake запускала что-то вроде Worker.work, и терпеть неудачу, как описано выше. Когда я запускаю Worker.work из консоли, пройдет. После того, как я переместил включения в конец файла, оба будет работать.

Кто-нибудь видел что-нибудь подобное? Я чувствую что-то вроде фундаментальный не правильно. Как будто я сломал что-то основное для функциональность и мое «исправление» - какой-то странный патч.

спасибо. Эрик

PS:

Есть модуль, который я включаю в свой объект AR. Он добавляет методы класса и экземпляра, выполняя:

def self.included(base)
  base.extend(ClassMethods)
end

Все методы в этом модуле доступны в консоли, но не через грабли.

Обновление: Я заметил, что если я возьму часть: work =>: environment из грабли задачи и вместо этого в блоке задачи требуется среда файл вручную (например, требуется (File.join (RAILS_ROOT, 'config', «окружающая среда»))) все отлично работает. Внезапно весь мой класс методы доступны. это очень тревожно.

1 Ответ

0 голосов
/ 01 марта 2011

Итак, я понял это ...

У нас был каталог в app / models, называемый сделок, который не был включен в путь загрузки.Вот где был мой модуль, который давал мне все проблемы.Почему он загружался нормально с консоли, а не с помощью rake ... Я не знаю.

Как только я добавил это в config.load_path, все стало работать нормально.Я никогда не замечал этого, потому что в 2.2.2 все работало нормально, приложение в рабочем режиме или в режиме разработки, консоль и задачи rake в режиме разработки, тестирования и производства.я ошибался, потому что ошибка была тупой, а мои «исправления» были похожи на действительно плохие идеи.

...