module TengineRailsPlugin::Progress
Constants
- EVENT_NAME_PREFIX
- STATUS_TYPES
Public Class Methods
run(model, event) { |progress| ... }
click to toggle source
# File lib/tengine_rails_plugin/progress.rb, line 53 def self.run(model, event) progress = model.find(event[:batch_id]) progress.extend(self) progress.add_logs("#{Time.zone.now.rfc2822} Starting") progress.set_status(STATUS_TYPES.id_by_key(:starting)) progress.save! begin yield(progress) if block_given? rescue progress.add_logs("#{Time.zone.now.rfc2822} [#{$!.class.name}] #{$!.message}\n " + $!.backtrace.join("\n ")) progress.set_status(STATUS_TYPES.id_by_key(:error)) progress.save! raise else progress.add_logs("#{Time.zone.now.rfc2822} SUCCESS") progress.set_status(STATUS_TYPES.id_by_key(:success)) progress.save! end end
Public Instance Methods
add_logs(*logs)
click to toggle source
# File lib/tengine_rails_plugin/progress.rb, line 24 def add_logs(*logs) if self.respond_to?(:tengine_logs) and self.respond_to?(:tengine_logs=) self.tengine_logs ||= [] self.tengine_logs += logs end end
event_name(name)
click to toggle source
# File lib/tengine_rails_plugin/progress.rb, line 20 def event_name(name) "#{EVENT_NAME_PREFIX}#{name}" end
fire(batch_name, options={}, &block)
click to toggle source
# File lib/tengine_rails_plugin/progress.rb, line 37 def fire(batch_name, options={}, &block) add_logs("#{Time.zone.now.rfc2822} sending the event to start") set_status(STATUS_TYPES.id_by_key(:sended)) begin properties = { batch_id: self.id, batch_name: batch_name }.update(options || {}) EventMachine.run do Tengine::Event.fire(event_name(batch_name), properties: properties) end rescue Exception add_logs("#{Time.zone.now.rfc2822} #{$!.class.name} #{$!.message}\n " + $!.backtrace.join("\n ")) set_status(STATUS_TYPES.id_by_key(:send_failure)) self.save! raise end end
set_status(status)
click to toggle source
# File lib/tengine_rails_plugin/progress.rb, line 31 def set_status(status) if self.respond_to?(:status_cd=) self.status_cd = status end end