Class: Heimdall::Task
Instance Method Summary collapse
- #export ⇒ Object
- #full_color_status ⇒ Object
- #full_status ⇒ Object
- #full_text_status ⇒ Object
- #has_error? ⇒ Boolean
- #job_class ⇒ Object
- #logger(msg) ⇒ Object
- #name ⇒ Object
- #next_run ⇒ Object
- #opts ⇒ Object
- #run_time ⇒ Object
- #set_done(log_data) ⇒ Object
- #set_fail(log_data) ⇒ Object
- #status ⇒ Object
- #to_json ⇒ Object
Instance Method Details
#export ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/heimdall/heimdall_model_task.rb', line 104 def export data = to_h data['log'] = data['log'].to_s.split($/) data['info'] = { name: name, status: full_text_status, run_time: run_time, has_error: has_error? } data end |
#full_color_status ⇒ Object
41 42 43 44 |
# File 'lib/heimdall/heimdall_model_task.rb', line 41 def full_color_status @colorize = true full_text_status end |
#full_status ⇒ Object
36 37 38 39 |
# File 'lib/heimdall/heimdall_model_task.rb', line 36 def full_status @colorize = false full_text_status end |
#full_text_status ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/heimdall/heimdall_model_task.rb', line 46 def full_text_status if status_sid == 'd' colorize 'Finished', :green elsif status_sid == 'e' colorize "Failed after #{self[:total_runs]} tries", :red elsif status_sid == 'a' colorize 'In que', :gray elsif status_sid == 'r' diff = (Time.now - self[:started_at]).to_i 'Running for %s sec' % diff else 'Unknow: %s' % status_sid end end |
#has_error? ⇒ Boolean
24 25 26 |
# File 'lib/heimdall/heimdall_model_task.rb', line 24 def has_error? self[:status_sid] == 'e' end |
#job_class ⇒ Object
20 21 22 |
# File 'lib/heimdall/heimdall_model_task.rb', line 20 def job_class self[:job].constantize end |
#logger(msg) ⇒ Object
96 97 98 99 100 101 102 |
# File 'lib/heimdall/heimdall_model_task.rb', line 96 def logger msg return if Heimdall::CONFIG.silent status = msg.to_s.downcase.include?('error') ? :error : :info = "#{self.class}[#{self.id}] (#{self.job}) - #{msg}" Heimdall.logger.send status, end |
#name ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/heimdall/heimdall_model_task.rb', line 3 def name if job == 'HeimdallProxyWorker' begin parts = Marshal.load Base64.decode64 opts['b64'] '%s#%s (ProxyWorker)' % parts rescue 'HeimdallProxyWorker (?)' end else job end end |
#next_run ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/heimdall/heimdall_model_task.rb', line 69 def next_run if ['d', 'r'].include?(status_sid) || (status_sid == 'a' && remaining_runs == 0) '-' else if scheduled_at > Time.now Time.ago scheduled_at else 'now' end end end |
#opts ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/heimdall/heimdall_model_task.rb', line 28 def opts if self[:opts].class == Hash self[:opts] else @opts ||= JSON.load self[:opts] end end |
#run_time ⇒ Object
61 62 63 64 65 66 67 |
# File 'lib/heimdall/heimdall_model_task.rb', line 61 def run_time if self[:started_at] && self[:finished_at] '%s sec' % (self[:finished_at] - self[:started_at]).to_i else '-' end end |
#set_done(log_data) ⇒ Object
81 82 83 84 |
# File 'lib/heimdall/heimdall_model_task.rb', line 81 def set_done log_data self.update status_sid: 'd', log: log_data, remaining_runs: 0, finished_at: Time.now logger 'DONE' end |
#set_fail(log_data) ⇒ Object
86 87 88 89 90 91 92 93 94 |
# File 'lib/heimdall/heimdall_model_task.rb', line 86 def set_fail log_data self.update status_sid: 'e', log: log_data, finished_at: Time.now, scheduled_at: Time.now + Heimdall::CONFIG.repeat_after, remaining_runs: remaining_runs - 1 logger :error end |
#status ⇒ Object
16 17 18 |
# File 'lib/heimdall/heimdall_model_task.rb', line 16 def status Heimdall::Database::STATUS[self[:status_sid]] || 'Unknown' end |
#to_json ⇒ Object
116 117 118 |
# File 'lib/heimdall/heimdall_model_task.rb', line 116 def to_json JSON.pretty_generate export end |