Sha256: 3d458f14a975721486f480ddd3a1159601811ee32666c319a9d191d18ca35611

Contents?: true

Size: 889 Bytes

Versions: 1

Compression:

Stored size: 889 Bytes

Contents

# frozen_string_literal: true

# rubocop:disable Lint/RescueException
class Solid::Process
  module Caller
    def call(arg = nil)
      output_already_set! if output?

      self.input = arg

      run_callbacks(:call) do
        ::Solid::Result.event_logs(name: self.class.name) do
          self.output =
            if dependencies&.invalid?
              Failure(:invalid_dependencies, dependencies: dependencies)
            elsif input.invalid?
              Failure(:invalid_input, input: input)
            else
              super(input.attributes.symbolize_keys)
            end
        rescue ::Exception => exception
          rescue_with_handler(exception) || raise

          output
        end
      end

      run_callbacks(:success) if output.success?
      run_callbacks(:failure) if output.failure?

      output
    end
  end
end
# rubocop:enable Lint/RescueException

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solid-process-0.4.0 lib/solid/process/caller.rb