仅为Rake任务运行初始化程序

时间:2010-12-01 11:02:58

标签: ruby-on-rails rake

我想在执行Rake任务时运行某个初始化程序,但在运行Rails服务器时却不行。

区分Rake调用和服务器调用的最佳方法是什么?

1 个答案:

答案 0 :(得分:7)

Rake允许您指定任务的依赖关系。建议的最佳操作是将特定于rake的初始化放在自己的任务中,而这又取决于“环境”任务。例如:

namespace :myapp do
    task :custom_environment => :environment do
        # special initialization stuff here
        # or call another initializer script
    end

    task :my_task => :custom_environment do
        # perform actions that need custom setup
    end
end

如果你想创建一个rake特定的初始化程序脚本目录,就像我们对rails适当的那样,我们只需在:custom_environment任务中实现它。

task :custom_environment => :environment do
    Dir.glob("config/rake-initializers/*.rb").each do |initializer|
        require initializer
    end
end

这允许您将特定于rake的初始化器与常规初始化器分开。您只需要记住依赖于您设置的:custom_environment