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

shm*_*ael 5 rake ruby-on-rails

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

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

Ber*_*sch 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
Run Code Online (Sandbox Code Playgroud)

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

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

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