Переменная Rufus-планировщик для часового пояса - ruby ​​on rails - PullRequest
2 голосов
/ 02 сентября 2011

Я запускаю приложение rails, которое использует rufus-планировщик для отправки ежедневного электронного письма всем пользователям в полдень, однако в настоящее время оно отправляет его в полдень для часового пояса приложений «Тайбэй».

Я регистрирую пользовательские часовые пояса при регистрации, но не могу поместить переменную в задачу 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 прочитал ее правильно.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 02 сентября 2011

Планировщику не нужно заботиться о часовых поясах, лучше думать в 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
2 голосов
/ 03 сентября 2011
scheduler.cron("0 15 * * * #{@time_zone}") do
  # ...
end

и rufus-планировщик README говорит

Часовые пояса - это те, которые поддерживаются rubygem «tzinfo» (https://github.com/tzinfo/tzinfo).

...