Class: Writefully::Tools::Dispatcher
- Inherits:
-
Object
- Object
- Writefully::Tools::Dispatcher
- Includes:
- Celluloid
- Defined in:
- lib/writefully/tools/dispatcher.rb
Instance Attribute Summary collapse
-
#job ⇒ Object
readonly
Returns the value of attribute job.
Instance Method Summary collapse
- #dispatch ⇒ Object
- #get_job_data ⇒ Object
- #heartbeat ⇒ Object
-
#initialize ⇒ Dispatcher
constructor
A new instance of Dispatcher.
- #is_retry? ⇒ Boolean
- #job_valid? ⇒ Boolean
- #retry_job ⇒ Object
- #retry_valid? ⇒ Boolean
- #run_job ⇒ Object
Constructor Details
#initialize ⇒ Dispatcher
8 9 10 11 12 |
# File 'lib/writefully/tools/dispatcher.rb', line 8 def initialize every 1.second do async.heartbeat end end |
Instance Attribute Details
#job ⇒ Object (readonly)
Returns the value of attribute job.
6 7 8 |
# File 'lib/writefully/tools/dispatcher.rb', line 6 def job @job end |
Instance Method Details
#dispatch ⇒ Object
29 30 31 |
# File 'lib/writefully/tools/dispatcher.rb', line 29 def dispatch Celluloid::Actor[job[:worker]].perform(job[:message]) end |
#get_job_data ⇒ Object
14 15 16 |
# File 'lib/writefully/tools/dispatcher.rb', line 14 def get_job_data Writefully.redis.with { |c| c.lpop 'jobs' } end |
#heartbeat ⇒ Object
18 19 20 21 |
# File 'lib/writefully/tools/dispatcher.rb', line 18 def heartbeat @job = Marshal.load(get_job_data) run_job if job_valid? end |
#is_retry? ⇒ Boolean
37 38 39 |
# File 'lib/writefully/tools/dispatcher.rb', line 37 def is_retry? job_valid? and job[:message].has_key?(:tries) and job[:message].has_key?(:run) end |
#job_valid? ⇒ Boolean
41 42 43 |
# File 'lib/writefully/tools/dispatcher.rb', line 41 def job_valid? job.has_key?(:worker) and job.has_key?(:message) end |
#retry_job ⇒ Object
33 34 35 |
# File 'lib/writefully/tools/dispatcher.rb', line 33 def retry_job Celluloid::Actor[:retryer].retry(job) end |
#retry_valid? ⇒ Boolean
45 46 47 |
# File 'lib/writefully/tools/dispatcher.rb', line 45 def retry_valid? is_retry? and (job[:message][:run] == false) end |
#run_job ⇒ Object
23 24 25 26 27 |
# File 'lib/writefully/tools/dispatcher.rb', line 23 def run_job if retry_valid? then retry_job elsif job_valid? then dispatch end end |