在我的应用程序中,我希望每两周根据用户触发操作的时间调用一个操作。我想有什么令人困惑的是为什么似乎没有这样做的直接方式。
理想情况下,重复的作业将在模型中设置,而不是其他文件。例如,whenever
gem有这些instructions:
入门
$ cd /apps/my-great-project
$ wheneverize .
这将为您创建初始
config/schedule.rb
文件。
但我不想把我的日程安排在那里。我希望时间表在我的模型中。我没有设置时间表,它是由我的用户设置的。
有没有直接的方法来实现这个?几个星期以来,我一直对此感到难过。
答案 0 :(得分:0)
你可以使用延迟工作。
http://asciicasts.com/episodes/171-delayed-job
您的用户可以定义存储在模型中的作业。您将创建第一个延迟的作业,并且在每个完成的作业之后,您可以开始新的延迟作业。
如果您的用户创建的作业应该在凌晨3:00运行,并且他在下午3:00保存该作业,则需要创建第一份作业:
Delayed::Job.enqueue(CronJob.new(params[:id]), 1, 12.hours.from_now )
在开始这项工作之前,你将创建下一份工作
Delayed::Job.enqueue(CronJob.new(params[:id]), 1, 1.days.from_now )