class QC::Batches::Batch
Attributes
complete_args[RW]
complete_method[RW]
complete_q_name[RW]
created_at[RW]
id[RW]
queue[RW]
Public Class Methods
complete_if_finished(batch_id)
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 32 def self.complete_if_finished(batch_id) if Batch.finished?(batch_id) QC.default_conn_adapter.connection.transaction do |conn| batch = Batch.find(batch_id, lock: true) return unless batch batch.complete end end end
create(attributes = nil)
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 60 def self.create(attributes = nil) attributes ||= {} complete_method = attributes[:complete_method] complete_args = attributes[:complete_args] if complete_args && !complete_method; raise 'args was passed but no method' end id = Queries.create_batch(attributes) new_attributes = attributes.clone new_attributes[:id] = id Batch.new(new_attributes) end
find(id, lock=false)
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 73 def self.find(id, lock=false) if attributes = QC::Batches::Queries.find_batch(id, lock) return Batch.new(attributes) end end
finished?(id)
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 83 def self.finished?(id) !QC::Batches::Queries.has_pending_jobs?(id) end
new(args=nil)
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 11 def initialize(args=nil) args.each { |k,v| instance_variable_set("@#{k}", v) unless v.nil? } if args.is_a?(Hash) @queuing_complete = args[:queuing_complete] || false end
perform_job(method, batch_id, args=nil)
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 87 def self.perform_job(method, batch_id, args=nil) receiver_str, _, message = method.rpartition('.') receiver = eval(receiver_str) result = receiver.send(message, *args) return result end
Public Instance Methods
complete()
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 44 def complete return unless queuing_complete? && finished? if complete_method queue = complete_q_name ? Queue.new(complete_q_name) : QC queue.enqueue complete_method, *complete_args end delete time_to_complete = Integer((Time.now - created_at) * 1000) QC.log(:'time-to-complete-batch'=>time_to_complete, :source=>id) end
delete()
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 56 def delete Queries.delete_batch(self.id) end
enqueue(method, *args)
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 18 def enqueue(method, *args) (self.queue || QC).enqueue_batch method, self.id, args end
finished?()
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 79 def finished? Batch.finished?(self.id) end
queuing_complete()
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 26 def queuing_complete @queuing_complete = true Queries.save_queuing_complete(self.id) Batch.complete_if_finished self.id end
queuing_complete?()
click to toggle source
# File lib/queue_classic_batches/batch.rb, line 22 def queuing_complete? return @queuing_complete end