是否会根据服务器时间推迟工作?

时间:2014-11-13 12:56:36

标签: ruby-on-rails ruby delayed-job

我在rails应用程序中使用delayed_job。我想根据以UTC格式保存的表列运行delayed_job。我的服务器设置在EST中。延迟工作需要UTC还是EST?

1 个答案:

答案 0 :(得分:1)

如果您使用active_record_delayed_job,则会使用application.rb中设置的应用时区。

以下内容来自delayed_job来源(https://github.com/collectiveidea/delayed_job_active_record/blob/master/lib/delayed/backend/active_record.rb#L97

    # Get the current time (GMT or local depending on DB)
    # Note: This does not ping the DB to get the time, so all your clients
    # must have syncronized clocks.
    def self.db_time_now
      if Time.zone
        Time.zone.now
      elsif ::ActiveRecord::Base.default_timezone == :utc
        Time.now.utc
      else
        Time.now
      end
    end

,这在reserve_with_scope中用于查询数据库中的可用作业(从第56行开始)

如果您不确定应用程序中设置了哪个时区,可以使用rails控制台中的以下内容

2.1.4 :005 > Rails.application.config.time_zone
 => "Helsinki"

2.1.4 :007 > Time.zone.name
 => "Helsinki"