如何从rails rake任务访问模型对象?
如果我在我的rake中初始化我的rufus调度程序$scheduler = Rufus::Scheduler.start_new
,那么调度程序会保持活动状态,因为它来自rake任务吗?
答案 0 :(得分:9)
要在rake任务中访问rails模型,您需要加载:environment。
task :my_task => [:environment] do
User.new #...
end
您不会在任务中调用调度程序,反之亦然。您需要启动一个Rufus调度程序,然后从它们调用您的rake任务。
你需要先
# other require statements ...
require 'rake'
# ...
scheduler = Rufus::Scheduler.start_new
scheduler.cron "00 6 * * *" do
Rake::Task["sometask"].invoke
end