Module: Sidekiq::Repeat::Repeatable::ClassMethods
- Defined in:
- lib/sidekiq/repeat/repeatable.rb
Instance Method Summary collapse
Instance Method Details
#next_scheduled_job ⇒ Object
32 33 34 35 |
# File 'lib/sidekiq/repeat/repeatable.rb', line 32 def next_scheduled_job @ss ||= Sidekiq::ScheduledSet.new @ss.find { |job| job.klass == self.name } end |
#repeat(&block) ⇒ Object
5 6 7 8 9 10 |
# File 'lib/sidekiq/repeat/repeatable.rb', line 5 def repeat(&block) @cronline = MiniIceCube::MainDsl.new.instance_eval(&block).to_s @cronline = CronParser.new(@cronline) rescue ArgumentError fail "repeat '#{@cronline}' in class #{self.name} is not a valid cron line" end |
#reschedule ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/sidekiq/repeat/repeatable.rb', line 12 def reschedule # Only if repeat is configured. return unless !!@cronline ts = @cronline.next args = [Time.now.to_f, ts.to_f].take(instance_method(:perform).arity) nj = next_scheduled_job if nj if nj.at > ts nj.item['args'] = args nj.reschedule ts.to_f Sidekiq.logger.info "Re-scheduled #{self.name} for #{ts}." end else self.perform_at ts.to_f, *args Sidekiq.logger.info "Scheduled #{self.name} for #{ts}." end end |