class GenericJob::Stub

Public Class Methods

new(receiver, opts) click to toggle source
# File lib/generic_job/stub.rb, line 5
def initialize(receiver, opts)
  @receiver = receiver
  @opts = opts
  @init_args = nil
end

Public Instance Methods

method_missing(name, *args, &_block) click to toggle source
Calls superclass method
# File lib/generic_job/stub.rb, line 15
def method_missing(name, *args, &_block)
  if receiver_has_method? name
    call_missing_method name.to_s, *args
  else
    super
  end
end
new(*args) click to toggle source
# File lib/generic_job/stub.rb, line 23
def new(*args)
  @init_args = args.first
  self
end
respond_to_missing?(name, include_private) click to toggle source
Calls superclass method
# File lib/generic_job/stub.rb, line 11
def respond_to_missing?(name, include_private)
  receiver_has_method?(name) || super
end

Private Instance Methods

call_missing_method(name, *args) click to toggle source
# File lib/generic_job/stub.rb, line 38
def call_missing_method(name, *args)
  if @init_args
    GenericJob.set(@opts).perform_later receiver_as_hash(args), name
  else
    GenericJob.set(@opts)
              .perform_later prepare_receiver, meth: name, args: args
  end
end
prepare_receiver() click to toggle source
# File lib/generic_job/stub.rb, line 55
def prepare_receiver
  return @receiver unless @receiver.is_a? Class

  @receiver.name
end
receiver_as_hash(args) click to toggle source
# File lib/generic_job/stub.rb, line 47
def receiver_as_hash(args)
  {
    class: @receiver.name,
    init_args: @init_args,
    meth_args: args
  }
end
receiver_has_method?(name) click to toggle source
# File lib/generic_job/stub.rb, line 30
def receiver_has_method?(name)
  if @init_args
    @receiver.new(**@init_args).respond_to? name
  else
    @receiver.respond_to? name
  end
end