Sha256: 5dfe77fdba73cbef2adaaada7491e95c0ea0a6b3571353c2e3a4c704c9197990

Contents?: true

Size: 882 Bytes

Versions: 16

Compression:

Stored size: 882 Bytes

Contents

# frozen_string_literal: true

module Lcms
  module Engine
    # Base interactor to be used on the controllers
    # Usage:
    #
    #   class MyController
    #     def my_action
    #       interactor = MyInteractor.call(self)
    #       if interactor.success?
    #           # do something
    #       else
    #           # use interactor.error
    #       end
    class BaseInteractor
      def self.call(context)
        interactor = new(context)
        interactor.run
        interactor
      end

      attr_reader :error

      def initialize(context)
        @context = context
      end

      def success?
        @error.nil?
      end

      def run
        raise NotImplementedError
      end

      protected

      attr_reader :context

      def fail!(error)
        @error = error
      end

      def params
        context.params
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
lcms-engine-0.5.5 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.5.4 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.5.3 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.5.2 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.5.1 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.5.0 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.4.2 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.4.1 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.4.0 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.3.1 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.1.4 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.3.0 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.1.3 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.2.0 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.1.2 app/interactors/lcms/engine/base_interactor.rb
lcms-engine-0.1.0 app/interactors/lcms/engine/base_interactor.rb