我正在创建一个自动抽奖系统。我有一个绘制按钮,它将运行绘图功能来选择一个赢家或赢家,并向管理员发送一封电子邮件。
我希望这是一个完全自动化的系统,以便管理员只需创建抽奖活动,他们会收到一封电子邮件,其中包含谁在抽奖日期过后赢了。我的抽奖活动有一个与他们相关的抽奖日期,一旦通过,我需要调用该功能。
如何告知应用程序检查时间/日期以查看是否有任何抽奖时间已过?我到处寻找,似乎无法找到办法。
答案 0 :(得分:2)
您可以使用whenever gem来定义每小时运行一次的工作(或者经常需要),检查抽奖日期,并为任何已经过的任务运行抽奖。
答案 1 :(得分:2)
每当我需要安排事情时,我会在我的rails应用中使用Clockwork。只需将其设置为在您需要时运行作业,并在该作业中执行逻辑以查看需要处理哪些抽奖。例如:
发条配置
every(1.day, 'Raffle::CheckJob', at: '01:00')
<强>作业强>
Raffle.not_complete.find_each(batch_size: 10) do |raffle|
if raffle.has_ended?
// logic
end
end
答案 2 :(得分:1)
您应该编写一个rake任务并将其执行添加到服务器上的crontab。您可以使用whenever
gem来简化每个部署的crontab脚本和自动更新(when-capistrano /never-mina)。您的佣金任务示例:
namespace :raffle do
task :check do
Raffle.get_winners.each do |w|
Mailer.send_win_mail(w).deliver_later
end
end
end
deliver_later
是您使用的队列驱动程序在队列中的后台执行(DelayedJob / Rescue / Backburner等)