class Aservice::Callback
Sidekiq
job callbacks
Public Class Methods
add(jid, class_name, method, args)
click to toggle source
# File lib/aservice/callback.rb, line 7 def add(jid, class_name, method, args) opt = { 'class' => class_name, 'method' => method, 'args' => args } Sidekiq.redis do |conn| conn.multi do conn.rpush(key(jid), opt.to_json) conn.expire(key(jid), Aservice::Config.callbacks_expiration) end end end
failure(job)
click to toggle source
# File lib/aservice/callback.rb, line 27 def failure(job) clear_stack(job['jid']) end
success(job)
click to toggle source
# File lib/aservice/callback.rb, line 21 def success(job) while (opt = pop_next(job['jid'])) execute_service(opt['class'], opt['method'], opt['args']) end end
Private Class Methods
clear_stack(jid)
click to toggle source
# File lib/aservice/callback.rb, line 46 def clear_stack(jid) Sidekiq.redis do |conn| conn.del(key(jid)) end end
execute_service(class_name, method, args)
click to toggle source
# File lib/aservice/callback.rb, line 33 def execute_service(class_name, method, args) Kernel.const_get(class_name).send(method, *args) end
key(jid)
click to toggle source
# File lib/aservice/callback.rb, line 52 def key(jid) "#{Aservice::Config.redis_prefix}_#{jid}" end
pop_next(jid)
click to toggle source
# File lib/aservice/callback.rb, line 37 def pop_next(jid) opt = Sidekiq.redis do |conn| conn.lpop(key(jid)) end return false if opt.nil? JSON.parse(opt) end