2013-01-31 17:42:19 +00:00
|
|
|
module Sidetiq
|
2013-02-04 12:11:46 +00:00
|
|
|
# Public: Mixin for Sidekiq::Worker classes.
|
|
|
|
#
|
|
|
|
# Examples
|
|
|
|
#
|
|
|
|
# class MyWorker
|
2013-03-11 17:11:37 +00:00
|
|
|
# include Sidekiq::Worker
|
|
|
|
# include Sidetiq::Schedulable
|
2013-02-04 12:11:46 +00:00
|
|
|
#
|
2013-03-11 17:11:37 +00:00
|
|
|
# # Daily at midnight
|
2013-07-30 11:32:36 +03:00
|
|
|
# recurrence { daily }
|
2013-03-11 17:11:37 +00:00
|
|
|
# end
|
2013-01-31 17:42:19 +00:00
|
|
|
module Schedulable
|
|
|
|
module ClassMethods
|
2013-03-11 14:51:31 +00:00
|
|
|
# Public: Returns a Float timestamp of the last scheduled run.
|
2013-03-08 16:02:34 +00:00
|
|
|
def last_scheduled_occurrence
|
|
|
|
get_timestamp "last"
|
|
|
|
end
|
|
|
|
|
2013-03-11 14:51:31 +00:00
|
|
|
# Public: Returns a Float timestamp of the next scheduled run.
|
2013-03-08 16:02:34 +00:00
|
|
|
def next_scheduled_occurrence
|
|
|
|
get_timestamp "next"
|
|
|
|
end
|
|
|
|
|
2013-07-12 10:33:57 +01:00
|
|
|
def tiq(*args, &block) # :nodoc:
|
|
|
|
Sidetiq.logger.warn "DEPRECATION WARNING: Sidetiq::Schedulable#tiq" <<
|
|
|
|
" is deprecated and will be removed. Use" <<
|
|
|
|
" Sidetiq::Schedulable#recurrence instead."
|
|
|
|
recurrence(*args, &block)
|
|
|
|
end
|
|
|
|
|
|
|
|
def recurrence(options = {}, &block) # :nodoc:
|
2013-02-01 09:35:25 +00:00
|
|
|
clock = Sidetiq::Clock.instance
|
2013-07-29 17:00:53 +01:00
|
|
|
clock.mon_synchronize do
|
2013-03-11 17:11:37 +00:00
|
|
|
schedule = clock.schedule_for(self)
|
|
|
|
schedule.instance_eval(&block)
|
|
|
|
schedule.set_options(options)
|
2013-01-31 17:42:19 +00:00
|
|
|
end
|
|
|
|
end
|
2013-03-08 16:02:34 +00:00
|
|
|
|
2013-03-11 17:11:37 +00:00
|
|
|
private
|
2013-03-08 16:02:34 +00:00
|
|
|
|
2013-03-08 16:07:25 +00:00
|
|
|
def get_timestamp(key)
|
2013-03-08 16:02:34 +00:00
|
|
|
Sidekiq.redis do |redis|
|
|
|
|
(redis.get("sidetiq:#{name}:#{key}") || -1).to_f
|
|
|
|
end
|
|
|
|
end
|
2013-01-31 17:42:19 +00:00
|
|
|
end
|
|
|
|
|
2013-02-04 12:11:46 +00:00
|
|
|
def self.included(klass) # :nodoc:
|
2013-01-31 17:42:19 +00:00
|
|
|
klass.extend(Sidetiq::Schedulable::ClassMethods)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2013-03-11 14:51:31 +00:00
|
|
|
|