Sha256: 67fec9474e495e0fe0ae53341bebbf344d9550830c16d5993af7d57145e0036f

Contents?: true

Size: 703 Bytes

Versions: 1

Compression:

Stored size: 703 Bytes

Contents

# frozen_string_literal: true

module Lite
  module Service
    class Base

      class << self

        def call(*args)
          klass = new(*args)
          klass.call
          klass
        end

      end

      attr_reader :result

      def initialize(*args)
        @args = args
      end

      def call
        raise Lite::Service::NotImplementedError unless defined?(command)
        return @result if called?

        @called = true
        @result = command
      end

      def called?
        @called ||= false
      end

      def recall!
        @called = false
        %i[cache errors].each { |mixin| send(mixin).clear if respond_to?(mixin) }
        call
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lite-service-1.0.2 lib/lite/service/base.rb