Sha256: 14e438bec908e857f517b83925e47c8570f5a5d3381ab398f303bc91716bfaa3

Contents?: true

Size: 481 Bytes

Versions: 7

Compression:

Stored size: 481 Bytes

Contents

# frozen_string_literal: true

module Miteru
  #
  # Base class for services
  #
  class Service
    include Dry::Monads[:result, :try]

    def call(*args, **kwargs)
      raise NotImplementedError, "You must implement #{self.class}##{__method__}"
    end

    def result(...)
      Try[StandardError] { call(...) }.to_result
    end

    class << self
      def call(...)
        new.call(...)
      end

      def result(...)
        new.result(...)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
miteru-2.2.0 lib/miteru/service.rb
miteru-2.1.1 lib/miteru/service.rb
miteru-2.1.0 lib/miteru/service.rb
miteru-2.0.3 lib/miteru/service.rb
miteru-2.0.2 lib/miteru/service.rb
miteru-2.0.1 lib/miteru/service.rb
miteru-2.0.0 lib/miteru/service.rb