【问题标题】:Rails: How to properly set up the timezone on the production server (EC2 Ubuntu)?Rails:如何在生产服务器(EC2 Ubuntu)上正确设置时区?
【发布时间】:2016-08-04 22:26:16
【问题描述】:

我有一个位于俄勒冈地区的 EC2 实例。 当我在服务器上登录时,我看到以下内容:

System information as of Wed Apr 13 04:13:49 UTC 2016

纽约当前时间:下午 12:51。

我所有的 rake 任务都是根据纽约时间设置的。我安排了一个每天早上 4 点运行的任务,但是在迁移到 AWS EC2 后,这个任务在午夜运行。

我尝试在config/environments/production.rb中设置时区:

  config.time_zone = 'Eastern Time (US & Canada)'
  config.active_record.default_timezone = 'Eastern Time (US & Canada)'  

但即使在重新启动服务器后,任务也会在每个午夜启动,而不是凌晨 4 点。

我的下一步应该是什么?

谢谢。

【问题讨论】:

  • “我所有的 rake 任务都是根据纽约时间设置的。我已经安排了一个每天早上 4 点运行的任务,但是在迁移到 AWS EC2 之后,这个任务在午夜运行。”什么机制调度任务?克朗?侧基?还有什么?
  • 是的,使用 CRON 安排的任务(准确地说是whenever gem)。

标签: ruby-on-rails ubuntu amazon-web-services time amazon-ec2


【解决方案1】:

随后对此问题的评论表明使用了whenever gem。 whenever 策略是避免时区逻辑,由您决定。但是,this approach 到 whenever.rb:

Time.zone = "US/Eastern"

every 1.day, :at => Time.zone.parse('4:30 am').utc do
  command 'echo hello'
end

这允许您的服务器继续使用 UTC 时间(您的帖子表明它确实如此),而您的代码对如何描述时钟上的特定时刻有自己的概念。作者表示他喜欢这种方法,您可以在部署后通过检查 crontab (crontab -l) 自行验证。请务必注意,您的 crontab 将采用 UTC;这个系统库对您的 Rails 环境或运行时没有特殊的了解。

【讨论】:

    猜你喜欢
    • 2014-10-28
    • 2018-09-01
    • 2012-10-16
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 2021-04-28
    • 2011-01-09
    相关资源
    最近更新 更多