class SidekiqAdhocJob::ScheduleAdhocJob

Attributes

request_params[R]
worker_keyword_params[R]
worker_klass[R]
worker_klass_inspector[R]
worker_positional_params[R]

Public Class Methods

new(job_name, request_params) click to toggle source
# File lib/sidekiq_adhoc_job/services/schedule_adhoc_job.rb, line 6
def initialize(job_name, request_params)
  @request_params = request_params.inject({}) do |acc, (k, v)|
    acc[k.to_sym] = v
    acc
  end
  @worker_klass = WorkerClassesLoader.find_worker_klass(job_name)
  @worker_klass_inspector = Utils::ClassInspector.new(worker_klass)

  parse_params
end

Public Instance Methods

call() click to toggle source
# File lib/sidekiq_adhoc_job/services/schedule_adhoc_job.rb, line 17
def call
  SidekiqAdhocJob.config.strategy.perform_async(worker_klass, *worker_positional_params, **worker_keyword_params)
end

Private Instance Methods

allowed_params() click to toggle source
# File lib/sidekiq_adhoc_job/services/schedule_adhoc_job.rb, line 37
def allowed_params
  worker_positional_params + worker_keyword_params
end
keyword_params() click to toggle source
# File lib/sidekiq_adhoc_job/services/schedule_adhoc_job.rb, line 46
def keyword_params
  worker_klass_inspector.required_kw_parameters(:perform) +
    worker_klass_inspector.optional_kw_parameters(:perform)
end
parse_params() click to toggle source
# File lib/sidekiq_adhoc_job/services/schedule_adhoc_job.rb, line 25
def parse_params
  @worker_positional_params = positional_params
    .reject { |key| request_params[key].empty? }
    .map { |key| StringUtil.parse(request_params[key], symbolize: true) }
  @worker_keyword_params = keyword_params
    .each_with_object({}) { |key, obj| obj[key.to_sym] = request_params[key] }
    .compact
  if !!request_params[:rest_args] && !request_params[:rest_args].empty?
    @worker_positional_params << StringUtil.parse_json(request_params[:rest_args].strip, symbolize: true)
  end
end
positional_params() click to toggle source
# File lib/sidekiq_adhoc_job/services/schedule_adhoc_job.rb, line 41
def positional_params
  worker_klass_inspector.required_parameters(:perform) +
    worker_klass_inspector.optional_parameters(:perform)
end