Class: QueuedTask
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- QueuedTask
- Defined in:
- app/models/queued_task.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.queue(klass, data) ⇒ Object
21 22 23 |
# File 'app/models/queued_task.rb', line 21 def self.queue(klass, data) create!(klass: klass, data: data) end |
.queue_unless_already_queued(klass, data) ⇒ Object
25 26 27 28 29 |
# File 'app/models/queued_task.rb', line 25 def self.queue_unless_already_queued(klass, data) if where(klass: klass.to_s).where('data = ?', data.to_yaml).empty? self.queue(klass.to_s, data) end end |
Instance Method Details
#dequeue! ⇒ Object
31 32 33 |
# File 'app/models/queued_task.rb', line 31 def dequeue! destroy end |
#lock! ⇒ Object
9 10 11 |
# File 'app/models/queued_task.rb', line 9 def lock! update_attribute :locked, true end |
#process! ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/models/queued_task.rb', line 35 def process! lock! begin run! dequeue! rescue raise ensure unlock! unless destroyed? end end |
#run! ⇒ Object
17 18 19 |
# File 'app/models/queued_task.rb', line 17 def run! klass.constantize.new(data).run! end |
#unlock! ⇒ Object
13 14 15 |
# File 'app/models/queued_task.rb', line 13 def unlock! update_attribute :locked, false end |