Sha256: 3ed8e4324b72a956ac99ea76e13aa456247cccaab741639a69df69c554506d11
Contents?: true
Size: 1.11 KB
Versions: 6
Compression:
Stored size: 1.11 KB
Contents
# frozen_string_literal: true module TheHelp # Provides convenience method for calling services # # The including module/class MUST provide the #service_context and # #service_logger methods, which will be provided as the called-service's # `context` and `logger` arguments, respectively. # # @example # class Foo # include TheHelp::ServiceCaller # # def do_something # call_service(MyService, some: 'arguments') # end # # private # # def service_context # # something that provides the context # end # # def service_logger # # an instance of a `Logger` # end # end module ServiceCaller # Calls the specified service # # @param service [Class<TheHelp::Service>] # @param args [Hash<Symbol, Object>] Any additional keyword arguments are # passed directly to the service. # @return [self] def call_service(service, **args, &block) service_args = { context: service_context, logger: service_logger }.merge(args) service.call(**service_args, &block) end end end
Version data entries
6 entries across 6 versions & 1 rubygems