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