Class: ActiveEnumerable::MethodCaller

Inherits:
Object
  • Object
show all
Defined in:
lib/active_enumerable/method_caller.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object, raise_no_method: true) ⇒ MethodCaller

Returns a new instance of MethodCaller.



6
7
8
9
# 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

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method) ⇒ Object



23
24
25
# File 'lib/active_enumerable/method_caller.rb', line 23

def method_missing(method)
  call(method)
end

Instance Attribute Details

#__object__Object (readonly)

Returns the value of attribute __object__.



4
5
6
# File 'lib/active_enumerable/method_caller.rb', line 4

def __object__
  @__object__
end

#raise_no_methodObject (readonly)

Returns the value of attribute raise_no_method.



4
5
6
# File 'lib/active_enumerable/method_caller.rb', line 4

def raise_no_method
  @raise_no_method
end

Instance Method Details

#call(method) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# 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