Доступны ли плагины для граблей? - PullRequest
0 голосов
/ 26 мая 2009

Когда я запускаю задачу rake для приложения, которое использует модели, определенные в плагине, я получаю ошибку Uninitialized Constant, но когда я запускаю процесс модели со скриптом / бегунком, который запускается в задаче rake, тогда задание запускается штраф?

Есть ли какая-то разница между скриптом / бегуном, который загружает все мои плагины, что не происходит, когда я запускаю задачу rake, даже если ей передается среда?

Ответы [ 2 ]

1 голос
/ 26 мая 2009

Ваша задача по рейку должна зависеть от: окружения. Это раскручивает среду вашего приложения и дает вам доступ к вашим моделям и т. Д.

Например

desc "Make DB Views"
task :views => [:environment] do |t|
# your task's code

end
0 голосов
/ 25 июля 2010

Вы должны указать, что ваша задача Rake требует загрузки среды:

task :your_task => :environment do |t| ...

или

task :your_task => [:environment] do |t| ...

или

task :your_task, :param1, :param2, :needs => :environment do |t, args| ...

или

task :your_task, :param1, :param2, :needs => [:environment] do |t, args| ...

Если вы указали это, значит, есть другая проблема. Я думаю, что один общий источник ошибок связан с тем, что плагины загружаются в пространство имен с именем Rails::Plugin. Таким образом, если вы определили класс с именем Foo в своем плагине, тогда задача Rake должна ссылаться на него как Rails::Plugin::Foo вместо простого Foo.

Если это не решит вашу проблему, попробуйте добавить puts "Check" в первую строку файла init.rb плагина и убедитесь, что при запуске задачи rake отображается Check. Если это так, то ваш плагин загружается, но, возможно, после этого он молча перестает работать.

И последнее: может быть, вы пытаетесь использовать плагин вне задачи, например, в начале вашего файла Rake, в некотором коде инициализации? Если это так, то произойдет сбой, поскольку плагины загружаются только при выполнении задачи (при загрузке среды).

Надеюсь, это поможет.

...