Module: TengineRailsPlugin::Progress
- Defined in:
- lib/tengine_rails_plugin/progress.rb
Defined Under Namespace
Modules: Driveable
Constant Summary collapse
- STATUS_TYPES =
SelectableAttr::Enum.new do name "Tengine進捗状態" entry 0, :initial, "初期状態" entry 1, :sended, "送信済み" entry 2, :send_failure, "送信失敗" entry 3, :starting, "実行中" entry 4, :starting_failure, "実行開始失敗" entry 5, :error, "実行失敗" entry 6, :success, "実行成功" end
- EVENT_NAME_PREFIX =
"tengine.progress."
Class Method Summary collapse
Instance Method Summary collapse
- #add_logs(*logs) ⇒ Object
- #event_name(name) ⇒ Object
- #fire(batch_name, options = {}, &block) ⇒ Object
- #set_status(status) ⇒ Object
Class Method Details
.run(model, event) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# 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}] #{$!.}\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 |
Instance Method Details
#add_logs(*logs) ⇒ Object
24 25 26 27 28 29 |
# 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) ⇒ Object
20 21 22 |
# File 'lib/tengine_rails_plugin/progress.rb', line 20 def event_name(name) "#{EVENT_NAME_PREFIX}#{name}" end |
#fire(batch_name, options = {}, &block) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/tengine_rails_plugin/progress.rb', line 37 def fire(batch_name, ={}, &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( || {}) EventMachine.run do Tengine::Event.fire(event_name(batch_name), properties: properties) end rescue Exception add_logs("#{Time.zone.now.rfc2822} #{$!.class.name} #{$!.}\n " + $!.backtrace.join("\n ")) set_status(STATUS_TYPES.id_by_key(:send_failure)) self.save! raise end end |
#set_status(status) ⇒ Object
31 32 33 34 35 |
# 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 |