class SidekiqAdhocJob::Utils::ClassInspector

Attributes

klass_name[R]
klass_obj[R]
method_parameters[R]

Public Class Methods

new(klass_name) click to toggle source
# File lib/sidekiq_adhoc_job/utils/class_inspector.rb, line 7
def initialize(klass_name)
  @klass_name = klass_name
  @klass_obj = klass_name.new
  @method_parameters = {}
end

Public Instance Methods

has_rest_parameter?(method_name) click to toggle source
# File lib/sidekiq_adhoc_job/utils/class_inspector.rb, line 46
def has_rest_parameter?(method_name)
  !!parameters(method_name)[:rest]
end
klass_method(method) click to toggle source
# File lib/sidekiq_adhoc_job/utils/class_inspector.rb, line 50
def klass_method(method)
  return method if method.owner == klass_name

  klass_method(method.super_method)
end
optional_kw_parameters(method_name) click to toggle source
# File lib/sidekiq_adhoc_job/utils/class_inspector.rb, line 42
def optional_kw_parameters(method_name)
  parameters(method_name)[:key] || []
end
optional_parameters(method_name) click to toggle source
# File lib/sidekiq_adhoc_job/utils/class_inspector.rb, line 34
def optional_parameters(method_name)
  parameters(method_name)[:opt] || []
end
parameters(method_name) click to toggle source
# File lib/sidekiq_adhoc_job/utils/class_inspector.rb, line 13
def parameters(method_name)
  return method_parameters[method_name] if method_parameters[method_name]

  klass_method = klass_method(klass_obj.method(method_name))
  params = klass_method
           .parameters
           .group_by { |type, _| type }
           .inject({}) do |acc, (type, params)|
             acc[type] = params.map(&:last)
             acc
           end

  method_parameters[method_name] = params

  params
end
required_kw_parameters(method_name) click to toggle source
# File lib/sidekiq_adhoc_job/utils/class_inspector.rb, line 38
def required_kw_parameters(method_name)
  parameters(method_name)[:keyreq] || []
end
required_parameters(method_name) click to toggle source
# File lib/sidekiq_adhoc_job/utils/class_inspector.rb, line 30
def required_parameters(method_name)
  parameters(method_name)[:req] || []
end