Sha256: 15ecedb473056be37346b97d30caf5d312f83df5cc220146435d2a46cc9efa33
Contents?: true
Size: 1023 Bytes
Versions: 1
Compression:
Stored size: 1023 Bytes
Contents
module Crono class Job include Logging attr_accessor :performer attr_accessor :period attr_accessor :last_performed_at def initialize(performer, period) self.performer, self.period = performer, period end def next next_time = period.next(since: last_performed_at) next_time.past? ? period.next : next_time end def description "Perform #{performer} #{period.description}" end def job_id description end def perform logger.info "Perform #{performer}" self.last_performed_at = Time.now save Thread.new do performer.new.perform logger.info "Finished #{performer} in %.2f seconds" % (Time.now - last_performed_at) end end def save model.update(last_performed_at: last_performed_at) end def load self.last_performed_at = model.last_performed_at end private def model @model ||= Crono::CronoJob.find_or_create_by(job_id: job_id) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
crono-0.6.1 | lib/crono/job.rb |