我正在创建一个自动抽签系统。我有一个抽签按钮,将运行一个抽签功能,以选择一个或多个优胜者,它发送电子邮件给管理员。
我希望这是一个完全自动化的系统,所以管理员只需创建抽签,他们就会收到一封电子邮件,谁赢后,抽签日期已经过去。我的抽奖有一个与他们相关的抽签日期,一旦它过去,我需要调用这个函数。
我如何告诉应用程序检查时间/日期,以确定抽奖时间是否已经过去?我到处找遍了,似乎找不到办法去做。
发布于 2017-04-13 19:21:16
您应该编写一个rake任务并将它的执行添加到服务器上的crontab中。您可以使用whenever gem来简化crontab脚本编写和每次部署的自动更新(时间-capistrano/何时-mina)。rake任务示例:
namespace :raffle do
task :check do
Raffle.get_winners.each do |w|
Mailer.send_win_mail(w).deliver_later
end
end
enddeliver_later是由您使用的队列驱动程序(Delayed作业/救援/回放等)在队列中执行的后台执行。
发布于 2017-04-13 19:19:41
您可以使用无论何时宝石来定义一个作业,该作业每小时运行(或者无论您想要什么时间),检查抽签日期,并为任何经过的作业运行抽签。
发布于 2017-04-13 19:19:47
每当我需要安排时间时,我都会在rails应用程序中使用发条。只需将其设置为在需要时运行作业,并在该作业中执行逻辑,以查看需要处理哪些抽奖。示例:
时钟配置
every(1.day, 'Raffle::CheckJob', at: '01:00')作业
Raffle.not_complete.find_each(batch_size: 10) do |raffle|
if raffle.has_ended?
// logic
end
endhttps://stackoverflow.com/questions/43400036
复制相似问题