class ActiveEnumerable::MethodCaller

@private

Attributes

__object__[R]
raise_no_method[R]

Public Class Methods

new(object, raise_no_method: true) click to toggle source
# File lib/active_enumerable/method_caller.rb, line 6
def initialize(object, raise_no_method: true)
  @__object__      = object
  @raise_no_method = raise_no_method
end

Public Instance Methods

call(method) click to toggle source
# File lib/active_enumerable/method_caller.rb, line 11
def call(method)
  if __object__.is_a? Hash
    wrap_return __object__.fetch(method)
  else
    wrap_return __object__.public_send(method)
  end
rescue NoMethodError => e
  raise e if raise_no_method
rescue KeyError => e
  raise e, "#{e.message} for #{__object__}" if raise_no_method
end
method_missing(method) click to toggle source
# File lib/active_enumerable/method_caller.rb, line 23
def method_missing(method)
  call(method)
end

Private Instance Methods

wrap_return(return_value) click to toggle source
# File lib/active_enumerable/method_caller.rb, line 29
def wrap_return(return_value)
  case return_value
  when Hash
    self.class.new(return_value, raise_no_method: raise_no_method)
  else
    return_value
  end
end