Class: ConvenientService::Utils::Object::SafeSend Private
- Inherits:
-
Support::Command
- Object
- Support::Command
- ConvenientService::Utils::Object::SafeSend
- Defined in:
- lib/convenient_service/utils/object/safe_send.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
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
- #args ⇒ Object readonly private
- #block ⇒ Object readonly private
- #kwargs ⇒ Object readonly private
- #method ⇒ Object readonly private
- #object ⇒ Object readonly private
Instance Method Summary collapse
-
#call ⇒ Object
private
Can be any type.
-
#initialize(object, method, *args, **kwargs, &block) ⇒ SafeSend
constructor
private
A new instance of SafeSend.
Methods inherited from Support::Command
Constructor Details
#initialize(object, method, *args, **kwargs, &block) ⇒ SafeSend
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of SafeSend.
62 63 64 65 66 67 68 |
# File 'lib/convenient_service/utils/object/safe_send.rb', line 62 def initialize(object, method, *args, **kwargs, &block) @object = object @method = method @args = args @kwargs = kwargs @block = block end |
Instance Attribute Details
#args ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
41 42 43 |
# File 'lib/convenient_service/utils/object/safe_send.rb', line 41 def args @args end |
#block ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
53 54 55 |
# File 'lib/convenient_service/utils/object/safe_send.rb', line 53 def block @block end |
#kwargs ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
47 48 49 |
# File 'lib/convenient_service/utils/object/safe_send.rb', line 47 def kwargs @kwargs end |
#method ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
35 36 37 |
# File 'lib/convenient_service/utils/object/safe_send.rb', line 35 def method @method end |
#object ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
29 30 31 |
# File 'lib/convenient_service/utils/object/safe_send.rb', line 29 def object @object end |
Instance Method Details
#call ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
SafeSend is similar to JSON::SafeParse in a sense that it never raises exceptions.
Returns Can be any type.
79 80 81 82 83 84 85 86 87 |
# File 'lib/convenient_service/utils/object/safe_send.rb', line 79 def call return unless object.respond_to?(method, true) begin object.__send__(method, *args, **kwargs, &block) rescue nil end end |