Class: ConvenientService::Service::Plugins::CanHaveAfterStepCallbacks::Middleware

Inherits:
MethodChainMiddleware
  • Object
show all
Defined in:
lib/convenient_service/service/plugins/can_have_after_step_callbacks/middleware.rb

Instance Method Summary collapse

Instance Method Details

#next(method, **kwargs, &block) ⇒ ConvenientService::Common::Plugins::CanHaveCallbacks::Entities::Callback

Examples:

Before CanHaveAfterStepCallbacks usage.

class Service
  include ::ConvenientService::Standard::Config

  step :foo

  class self::Step
    after :result do |step, arguments|
      organizer.instance_exec(step, arguments) do |step, arguments|
        log("after :step (#{step.index})")
      end
    end
  end

  def foo
    success
  end

  private

  def log(message)
    puts message
  end
end

After CanHaveAfterStepCallbacks usage.

class Service
  include ::ConvenientService::Standard::Config

  step :foo

  after :step do |step, arguments|
    log("after :step (#{step.index})")
  end

  def foo
    success
  end

  private

  def log(message)
    puts message
  end
end

Parameters:

  • method (Symbol)
  • block (Proc)

Returns:



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/convenient_service/service/plugins/can_have_after_step_callbacks/middleware.rb', line 63

def next(method, **kwargs, &block)
  return chain.next(method, **kwargs, &block) if method != :step

  entity.step_class.class_exec(kwargs, block) do |kwargs, block|
    after :result, **kwargs.merge(source_location: block.source_location) do |result|
      organizer.instance_exec(
        result.step,
        Support::Arguments.new(
          *args,
          **Utils::Hash.except(self.kwargs, [:organizer, :container])
        ),
        &block
      )
    end
  end
end