Schedule rails jobs in your users timezone
Struggled with this for a while today. Thought I'd share it!
Was trying to schedule sidekiq jobs to run at a specific time... based on our users timezone. Here's what I ended up going with.
This schedules a sidekiq job for 9:25am in the users timezone.
Time.zone = user.time_zone
user_time_to_utc = Time.zone.parse('2012-10-22 09:25:00').utc
puts "Scheduling for #{user.login} at #{user_time_to_utc}"
SidekiqJob.perform_at(user_time_to_utc,user.id)
Also on gist: https://gist.github.com/3927973
Written by Mike Coutermarsh
Related protips
1 Response
I believe you'd want to set Time.zone back to whatever it was before in the example above, otherwsie the Time class will be set to the last users zone until restart (or something else changes it).
An alternate might be:
ActiveSupport::TimeZone.new(user.time_zone).parse('2012-10-22 09:25:00')
over 1 year ago
·
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Ruby
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#