Sha256: d43ccf481f8b09aca65bf8994ed0700730888dc057d1ff09db3b7b296f8133d9

Contents?: true

Size: 1.06 KB

Versions: 2

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module Lite
  module Command
    module Internals
      module Faults

        def self.included(base)
          base.class_eval { attr_reader :fault_exception, :original_exception }
        end

        def caused_by
          return if success?

          @caused_by || self
        end

        def caused_fault?
          caused_by == self
        end

        def thrown_by
          return if success?

          @thrown_by || self
        end

        def threw_fault?
          thrown_by == self
        end

        def thrown?
          fault? && !caused_fault?
        end

        def raise!(original: false)
          exception = (fault_exception unless original) || original_exception
          return if exception.nil?

          raise(exception)
        end

        private

        def throw!(command)
          return if command.success?

          send(:"#{command.status}!", command)
        end

        def raise_dynamic_faults?
          Lite::Command.configuration.raise_dynamic_faults
        end

      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lite-command-3.1.3 lib/lite/command/internals/faults.rb
lite-command-3.1.2 lib/lite/command/internals/faults.rb