Sha256: f618f7fe73690a0a253abc78567ac45c2a1d352a8fd3abe097e039bc376ce950

Contents?: true

Size: 1.11 KB

Versions: 7

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)
      service_args = {
        context: service_context,
        logger: service_logger
      }.merge(args)
      service.call(**service_args)
      self
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
the_help-1.2.1 lib/the_help/service_caller.rb
the_help-1.2.0 lib/the_help/service_caller.rb
the_help-1.1.4 lib/the_help/service_caller.rb
the_help-1.1.3 lib/the_help/service_caller.rb
the_help-1.1.2 lib/the_help/service_caller.rb
the_help-1.1.1 lib/the_help/service_caller.rb
the_help-1.1.0 lib/the_help/service_caller.rb