class SidekiqRunner::Runner
Public Class Methods
enqueue(class_name, method_name, args = {})
click to toggle source
it adds to sidekiq queue directly
# File lib/sidekiq_runner/runner.rb, line 5 def self.enqueue(class_name, method_name, args = {}) queue = get_queue_name(class_name) enqueue_to(queue, class_name, method_name, args) end
enqueue_to(queue, class_name, method_name, args = {})
click to toggle source
it adds to sidekiq queue directly
# File lib/sidekiq_runner/runner.rb, line 16 def self.enqueue_to(queue, class_name, method_name, args = {}) Sidekiq::Client.enqueue_to(queue, class_name.constantize, method_name, args) end
get_queue_name(class_name)
click to toggle source
# File lib/sidekiq_runner/runner.rb, line 45 def self.get_queue_name(class_name) class_name.constantize.sidekiq_options_hash['queue'] end
run(class_name, method_name, args = {})
click to toggle source
# File lib/sidekiq_runner/runner.rb, line 10 def self.run(class_name, method_name, args = {}) queue = get_queue_name(class_name) run_in_queue(queue, class_name, method_name, args) end
run_in_queue(queue, class_name, method_name, args = {})
click to toggle source
it checks production, if production it adds in queue otherwise runs the method
# File lib/sidekiq_runner/runner.rb, line 21 def self.run_in_queue(queue, class_name, method_name, args = {}) run_as_background_job = Rails.env.production? ? true : false if run_as_background_job fail 'Non exist Workers app folder. The release folder deleted.'\ 'Please kill the workers and start again.' unless File.directory?(Rails.root) begin enqueue_to(queue, class_name, method_name, args) Sidekiq::Logging.logger.info "#{class_name}.#{method_name} Sidekiq job added with args #{args.inspect}" rescue => ex Sidekiq::Logging.logger.info ex end else fail "#{method_name} doesnt exists #{class_name}" unless class_name.constantize.new.respond_to?(method_name.to_sym) Sidekiq::Logging.logger.info "Running #{method_name} with args #{args.to_s}" obj = class_name.constantize.new args.empty? ? obj.send(method_name) : obj.send(method_name, args) end end