Class: ConvenientService::Utils::Object::SafeSend

Inherits:
Support::Command show all
Defined in:
lib/convenient_service/utils/object/safe_send.rb

Overview

Note:

ArgumentError is StandardError descendant, so it is also rescued. It is up to the client code to ensure that valid arguments are passed.

Returns nil when object does NOT respond to method. Otherwise it calls method on object and returns its value. If calling method on object raises an exception, it is rescued and nil is returned. Only StandardError exceptions are rescued. Uses __send__ under the hood.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Support::Command

[], call

Constructor Details

#initialize(object, method, *args, **kwargs, &block) ⇒ SafeSend

Returns a new instance of SafeSend.

Parameters:



57
58
59
60
61
62
63
# File 'lib/convenient_service/utils/object/safe_send.rb', line 57

def initialize(object, method, *args, **kwargs, &block)
  @object = object
  @method = method
  @args = args
  @kwargs = kwargs
  @block = block
end

Instance Attribute Details

#argsObject (readonly)

Returns the value of attribute args.



36
37
38
# File 'lib/convenient_service/utils/object/safe_send.rb', line 36

def args
  @args
end

#blockObject (readonly)

Returns the value of attribute block.



48
49
50
# File 'lib/convenient_service/utils/object/safe_send.rb', line 48

def block
  @block
end

#kwargsObject (readonly)

Returns the value of attribute kwargs.



42
43
44
# File 'lib/convenient_service/utils/object/safe_send.rb', line 42

def kwargs
  @kwargs
end

#methodObject (readonly)

Returns the value of attribute method.



30
31
32
# File 'lib/convenient_service/utils/object/safe_send.rb', line 30

def method
  @method
end

#objectObject (readonly)

Returns the value of attribute object.



24
25
26
# File 'lib/convenient_service/utils/object/safe_send.rb', line 24

def object
  @object
end

Instance Method Details

#callObject

Returns Can be any type.

Returns:

  • (Object)

    Can be any type.



72
73
74
75
76
77
78
79
80
# File 'lib/convenient_service/utils/object/safe_send.rb', line 72

def call
  return unless object.respond_to?(method, true)

  begin
    object.__send__(method, *args, **kwargs, &block)
  rescue
    nil
  end
end