Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save kivanio/74f4b90567d35ba133de to your computer and use it in GitHub Desktop.
Save kivanio/74f4b90567d35ba133de to your computer and use it in GitHub Desktop.
# Timezone extension to Sidetiq
Sidetiq::Schedulable::ClassMethods.class_eval do
# Sets the time zone for the recurrence rules.
#
# Example:
#
# class MyWorker
# include Sidekiq::Worker
# include Sidetiq::Schedulable
#
# schedule_time_zone "Australia/Perth"
#
# recurrence do
# daily.hour_of_day(13)
# end
#
# def perform
# puts "It's 1pm in Perth"
# end
# end
def schedule_time_zone(time_zone_name)
zone = ActiveSupport::TimeZone[time_zone_name]
# We use 2010-1-1 for the start time because that's what Sidetiq uses, and
# you probably need it to be in the past to do backfilling
schedule.start_time = zone.local(2010, 1, 1)
end
end
Sidetiq::Schedule.class_eval do
# Returns the time_zone for the schedule. Handy in Rspec assertions to
# verify that a worker's schedule is using the right timezone.
def time_zone
start_time.time_zone
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment