Module: ConvenientService::Core::Entities::Config::Entities::MethodMiddlewares::Entities::Middlewares::Chain::Concern::InstanceMethods
- Includes:
- Support::AbstractMethod
- Defined in:
- lib/convenient_service/core/entities/config/entities/method_middlewares/entities/middlewares/chain/concern/instance_methods.rb
Instance Method Summary collapse
-
#call(env) ⇒ Object
Can be any type.
- #chain ⇒ ConvenientService::Core::Entities::Config::Entities::MethodMiddlewares::Entities::Chain
- #entity ⇒ Class, Object
- #method ⇒ Symbol
-
#next ⇒ Object
Can be any type.
- #next_arguments ⇒ ConvenientService::Support::Arguments
Methods included from Support::Concern
Instance Method Details
#call(env) ⇒ Object
Returns Can be any type.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/convenient_service/core/entities/config/entities/method_middlewares/entities/middlewares/chain/concern/instance_methods.rb', line 44 def call(env) @__env__ = env ## # IMPORTANT: This is a library code. Do NOT do things like this in your application code. # chain.instance_variable_set(:@env, env) ## # NOTE: `__send__` is used since `next` is ruby keyword. # https://ruby-doc.org/core-2.7.0/doc/keywords_rdoc.html # # TODO: Enforce to always pass args, kwargs, block. # __send__(:next, *env[:args], **env[:kwargs], &env[:block]) end |
#chain ⇒ ConvenientService::Core::Entities::Config::Entities::MethodMiddlewares::Entities::Chain
102 103 104 |
# File 'lib/convenient_service/core/entities/config/entities/method_middlewares/entities/middlewares/chain/concern/instance_methods.rb', line 102 def chain @__chain__ ||= self.class.chain_class.new(stack: @__stack__) end |
#entity ⇒ Class, Object
67 68 69 |
# File 'lib/convenient_service/core/entities/config/entities/method_middlewares/entities/middlewares/chain/concern/instance_methods.rb', line 67 def entity @__env__[:entity] end |
#method ⇒ Symbol
Note:
Fallback to avoid ‘if` conditions based on `method` value when possible, prefer to create separate middlewares instead.
79 80 81 |
# File 'lib/convenient_service/core/entities/config/entities/method_middlewares/entities/middlewares/chain/concern/instance_methods.rb', line 79 def method @__env__[:method] end |
#next ⇒ Object
Note:
But it completely OK, to omit ‘chain.next(*args, **kwargs, &block)` completely. This way middleware stack is stopped in the “middle” and its “middle” value is returned.
Returns Can be any type.
38 |
# File 'lib/convenient_service/core/entities/config/entities/method_middlewares/entities/middlewares/chain/concern/instance_methods.rb', line 38 abstract_method :next |
#next_arguments ⇒ ConvenientService::Support::Arguments
90 91 92 93 94 |
# File 'lib/convenient_service/core/entities/config/entities/method_middlewares/entities/middlewares/chain/concern/instance_methods.rb', line 90 def next_arguments return unless @__env__.has_key?(:args) @__next_arguments__ ||= Support::Arguments.new(*@__env__[:args], **@__env__[:kwargs], &@__env__[:block]) end |