我正在运行一个使用rufus-scheduler的rails应用程序在中午向所有用户发送每日电子邮件,但是,它目前正在中午发送给应用时区“台北”。
我在注册时捕获用户时区,但我无法将变量放入rufus-scheduler任务
scheduler.cron('0 15 * * * @time_zone') do
Account.all.each do |account|
CODE
account.users.each do |user|
DELIVER EMAIL CODE
end
end
end
我想我只是不确定在哪里定义@time_zone变量,以便rufus能够正确读取它。
提前致谢!
答案 0 :(得分:3)
调度程序不需要关心时区,最好不要考虑UTC。您想要做的是每小时运行一次任务,只查找当前午夜的帐户。所以你的代码看起来更像是这样:
scheduler.cron('0 * * * *') do
tz = THE TIMEZONE WHERE IT IS NOW MIDNIGHT
Account.where(:timezone => tz).each do |account|
CODE
account.users.each do |user|
DELIVER EMAIL CODE
end
end
end
答案 1 :(得分:2)
scheduler.cron("0 15 * * * #{@time_zone}") do
# ...
end
和rufus-scheduler README说
时区是'tzinfo'rubygem(https://github.com/tzinfo/tzinfo)支持的时区。