Ruby on rails 时区的Rufus调度程序变量-ruby on rails

Ruby on rails 时区的Rufus调度程序变量-ruby on rails,ruby-on-rails,ruby,rufus-scheduler,Ruby On Rails,Ruby,Rufus Scheduler,我正在运行一个rails应用程序,它使用rufus scheduler在中午向所有用户发送每日电子邮件,但是,它目前在应用程序时区“台北”的中午发送 我在注册时捕获用户时区,但我无法将变量放入rufus调度程序任务中 scheduler.cron('0 15 * * * @time_zone') do Account.all.each do |account| CODE account.users.each do |user| DELIVER EMAIL CODE

我正在运行一个rails应用程序,它使用rufus scheduler在中午向所有用户发送每日电子邮件,但是,它目前在应用程序时区“台北”的中午发送

我在注册时捕获用户时区,但我无法将变量放入rufus调度程序任务中

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正确读取它


提前谢谢

调度器不需要关心时区,最好使用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
鲁弗斯调度员自述说

时区是由'tzinfo'rubygem()支持的时区


@jmettraux我试图为不同的时区运行同一个调度程序,但最终导致无限循环并持续运行调度程序。你能帮我一下吗?@anusha在
scheduler.cron("0 15 * * * #{@time_zone}") do
  # ...
end