class FunctionalLightService::Organizer::WithReducerLogDecorator
Attributes
decorated[R]
logged[R]
logged?[R]
logger[R]
organizer[R]
Public Class Methods
new(organizer, decorated: WithReducer.new, logger:)
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 8 def initialize(organizer, decorated: WithReducer.new, logger:) @decorated = decorated @organizer = organizer @logger = logger @logged = false end
Public Instance Methods
around_each(handler)
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 27 def around_each(handler) decorated.around_each(handler) self end
reduce(*actions)
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 32 def reduce(*actions) decorated.reduce(*actions) do |context, action| next context if logged? if has_failure?(context) write_failure_log(context, action) next context end if skip_remaining?(context) write_skip_remaining_log(context, action) next context end write_log(action, context) end end
with(data = {})
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 15 def with(data = {}) logger.info { "[FunctionalLightService] - calling organizer <#{organizer}>" } decorated.with(data) logger.info do "[FunctionalLightService] - keys in context: " \ "#{extract_keys(decorated.context.keys)}" end self end
Private Instance Methods
extract_keys(keys)
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 76 def extract_keys(keys) keys.map { |key| ":#{key}" }.join(', ') end
has_failure?(context)
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 80 def has_failure?(context) context.respond_to?(:failure?) && context.failure? end
log_expects(action)
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 62 def log_expects(action) return unless defined?(action.expects) && action.expects.any? logger.info("[FunctionalLightService] - expects: " \ "#{extract_keys(action.expects)}") end
log_promises(action)
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 69 def log_promises(action) return unless defined?(action.promises) && action.promises.any? logger.info("[FunctionalLightService] - promises: " \ "#{extract_keys(action.promises)}") end
skip_remaining?(context)
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 90 def skip_remaining?(context) context.respond_to?(:skip_remaining?) && context.skip_remaining? end
write_failure_log(context, action)
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 84 def write_failure_log(context, action) logger.warn("[FunctionalLightService] - :-((( <#{action}> has failed...") logger.warn("[FunctionalLightService] - context message: #{context.message}") @logged = true end
write_log(action, context)
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 52 def write_log(action, context) return unless logger.info? logger.info("[FunctionalLightService] - executing <#{action}>") log_expects(action) log_promises(action) logger.info("[FunctionalLightService] - keys in context: "\ "#{extract_keys(context.keys)}") end
write_skip_remaining_log(context, action)
click to toggle source
# File lib/functional-light-service/organizer/with_reducer_log_decorator.rb, line 94 def write_skip_remaining_log(context, action) return unless logger.info? msg = "[FunctionalLightService] - ;-) <#{action}> has decided " \ "to skip the rest of the actions" logger.info(msg) logger.info("[FunctionalLightService] - context message: #{context.message}") @logged = true end