class Micro::Service::Pipeline::SafeReducer

Public Instance Methods

&(arg)
Alias for: >>
>>(arg) click to toggle source
# File lib/micro/service/pipeline/reducer.rb, line 71
def >>(arg)
  raise NoMethodError, "undefined method `>>' for #{self.inspect}. Please, use the method `&' to avoid this error."
end
Also aliased as: &
call(arg = {}) click to toggle source
# File lib/micro/service/pipeline/reducer.rb, line 62
def call(arg = {})
  @services.reduce(initial_result(arg)) do |result, service|
    break result if result.failure?
    service_result(service, result)
  end
end

Private Instance Methods

service_result(service, result) click to toggle source
# File lib/micro/service/pipeline/reducer.rb, line 77
def service_result(service, result)
  begin
    instance = service.__new__(result, result.value)
    instance.call
  rescue => exception
    raise exception if Error::ByWrongUsage.check(exception)
    result.__set__(false, exception, :exception, instance)
  end
end