Class: Asyncapi::Client::Job

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
AASM
Defined in:
app/models/asyncapi/client/job.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.initial_stateObject



101
102
103
# File 'app/models/asyncapi/client/job.rb', line 101

def self.initial_state
  self.aasm.state_machine.initial_state
end

.non_initial_statesObject



105
106
107
108
109
# File 'app/models/asyncapi/client/job.rb', line 105

def self.non_initial_states
  self.aasm.states.reject do |state|
    state == initial_state
  end.map(&:name)
end

.post(url, headers: nil, body: nil, on_queue: nil, on_success: nil, on_error: nil, on_time_out: nil, on_queue_error: nil, callback_params: {}, follow_up: 5.minutes, time_out: nil) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'app/models/asyncapi/client/job.rb', line 48

def self.post(url,
              headers: nil,
              body: nil,
              on_queue: nil,
              on_success: nil,
              on_error: nil,
              on_time_out: nil,
              on_queue_error: nil,
              callback_params: {},
              follow_up: 5.minutes,
              time_out: nil)

  args = {
    follow_up_at: follow_up.from_now,
    on_queue: on_queue,
    on_success: on_success,
    on_error: on_error,
    on_queue_error: on_queue_error,
    on_time_out: on_time_out,
    callback_params: callback_params,
    headers: headers,
    body: body,
  }
  args[:time_out_at] = time_out.from_now if time_out
  job = create(args)
  JobPostWorker.perform_async(job.id, url)
end

Instance Method Details

#body=(body) ⇒ Object



80
81
82
83
# File 'app/models/asyncapi/client/job.rb', line 80

def body=(body)
  json = body.is_a?(Hash) ? body.to_json : body
  write_attribute :body, json
end

#urlObject



76
77
78
# File 'app/models/asyncapi/client/job.rb', line 76

def url
  Asyncapi::Client::Engine.routes.url_helpers.v1_job_url(self)
end