clockwork
clockwork copied to clipboard
`if` lambda can mutate the time object passed to other jobs
When I call the utc method on the time object passed as the parameter to a lambda, it changes the timezone of the time object for subsequent jobs' lambdas. e.g. the following if lambda changes the time zone of the time object for subsequent jobs.
if: lambda { |t|
puts "first lambda #{t}"
t.utc.hour % 12 == 0
}
I've created a repository for your reference with two jobs. The first one invokes the utc method which changes the timezone of the time object passed in the second job. Interestingly, this gets reset in the subsequent run. Here is a repository for you to test against: https://github.com/deepak-shopify/clockwork-bug/tree/main
➜ clockwork_app git:(main) bundle exec clockwork clock.rb
I, [2025-03-12T20:36:38.148840 #33111] INFO -- : Starting clock for 2 events: [ first.job second.job ]
first lambda 2025-03-12 20:36:38 +0530
second lambda 2025-03-12 15:06:38 UTC <-- THIS SHOULD BE +0530
first lambda 2025-03-12 20:36:39 +0530 <-- TIMEZONE IS RESET
second lambda 2025-03-12 15:06:39 UTC <-- BACK TO UTC
My expectation is that the time object passed to each job should be independent of the operations performed on it in other jobs.