Last active
November 30, 2016 18:59
-
-
Save toolmantim/76c0c35d57c15a292ba8 to your computer and use it in GitHub Desktop.
An addition to Sidetiq to make it easier to declare the worker's schedule's timezone. Assumes ActiveRecord::TimeZone is available.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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
Where would this file go on the rails app? Does it work with sidetiq 0.7.2?