Sha256: 416257efa179e2950162d24e33b72356b59c2c073bf1f9db91a1dfbd30e24225

Contents?: true

Size: 613 Bytes

Versions: 1

Compression:

Stored size: 613 Bytes

Contents

require "ostruct"

module Interactor
  class Context < OpenStruct
    def self.build(context = {})
      self === context ? context : new(context)
    end

    def success?
      !failure?
    end

    def failure?
      @failure || false
    end

    def fail!(context = {})
      modifiable.update(context)
      @failure = true
      raise Failure, self
    end

    def called!(interactor)
      _called << interactor
    end

    def rollback!
      return false if @rolled_back
      _called.reverse_each(&:rollback)
      @rolled_back = true
    end

    def _called
      @called ||= []
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
interactor-3.0.0 lib/interactor/context.rb