【发布时间】:2019-08-26 20:38:29
【问题描述】:
我正在使用 Grape 框架构建一个 API,我想将整个应用程序的默认时区设置为 UTC,这样当我调用 Time.zone.now 时,我就能得到正确的时间
我的config/application.rb 看起来像:
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'api'))
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'app'))
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'bundler/setup'
Bundler.require :default, ENV['RACK_ENV']
Time.zone = 'UTC'
require_rel '../app'
require_rel '../api'
require_rel '../lib'
require_rel 'initializers'
如果我通过bundle exec rackup -p 3000 或bin/console 启动它并调用Time.zone.now 我得到了正确的时间:Fri, 05 Apr 2019 00:47:23 UTC +00:00
虽然,当我使用 Sidekiq 工作人员或 Rack 本身之外的其他东西 (bundle exec sidekiq -r ./config/application.rb) 并尝试调用 p Time.zone 时,nil 被返回,Time.current 以我的时区返回时间:2019-04-04 21:48:57 -0300
,即使我要求 application.rb 包含 Time.zone = 'UTC' 声明
我如何也为我的员工设置全球 UTC 时区?
编辑 #1 - 工人代码
这是一个简单的 worker:它只打印 Time.now 或 Time.zone.now
module Cron
class Date
include Sidekiq::Worker
JOB_NAME = 'date_job'
def perform(start_date = 1.day.ago, end_date = Time.current)
p [Time.now, Time.current]
end
end
end
【问题讨论】:
-
您能否提供有关工人工作的模式详细信息/代码?
-
@dharmesh 完成...
标签: ruby timezone grape grape-api