Я создаю API с использованием Grape Framework и хочу установить часовой пояс по умолчанию для всего приложения как 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 - код работника
Это простой работник: он просто печатает 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