From 4432d471b865ed302242cf7d4849961da3bc1cc3 Mon Sep 17 00:00:00 2001 From: Vipul A M Date: Thu, 4 Jun 2020 09:49:22 +0530 Subject: [PATCH] Set timezone on a Job initialization to make it conform more with perform_later when doing JobClass.perform_now. Fixes #39529 --- activejob/lib/active_job/core.rb | 3 ++- activejob/test/cases/timezones_test.rb | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/activejob/lib/active_job/core.rb b/activejob/lib/active_job/core.rb index 4533f77d61..e83d2b2679 100644 --- a/activejob/lib/active_job/core.rb +++ b/activejob/lib/active_job/core.rb @@ -85,6 +85,7 @@ def initialize(*arguments) @priority = self.class.priority @executions = 0 @exception_executions = {} + @timezone = Time.zone&.name end ruby2_keywords(:initialize) if respond_to?(:ruby2_keywords, true) @@ -101,7 +102,7 @@ def serialize "executions" => executions, "exception_executions" => exception_executions, "locale" => I18n.locale.to_s, - "timezone" => Time.zone&.name, + "timezone" => timezone, "enqueued_at" => Time.now.utc.iso8601 } end diff --git a/activejob/test/cases/timezones_test.rb b/activejob/test/cases/timezones_test.rb index e2095b020d..d1a34212ac 100644 --- a/activejob/test/cases/timezones_test.rb +++ b/activejob/test/cases/timezones_test.rb @@ -21,4 +21,16 @@ class TimezonesTest < ActiveSupport::TestCase assert_equal "Just 5 hours to go", JobBuffer.last_value end + + test "perform_now passes down current timezone to the job" do + Time.zone = "America/New_York" + + Time.use_zone("London") do + job = TimezoneDependentJob.new("2018-01-01T00:00:00Z") + assert_equal "London", job.timezone + job.perform_now + end + + assert_equal "Happy New Year!", JobBuffer.last_value + end end