2009-05-26 2 views
0

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

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

ответ

1

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

Eg

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

end 
+0

Это то, что у нас есть среда, передаваемая таким образом, вот почему это так странно. – nitecoder

0

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

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

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

Смежные вопросы