Sha256: 58e98b55d4ea2f51bdb75728488b4aded7677cfaefa72ca4599ca3cf861c05aa

Contents?: true

Size: 629 Bytes

Versions: 1

Compression:

Stored size: 629 Bytes

Contents

module BigMachine
  module Lock
    extend ActiveSupport::Concern

    included do
    end

    module ClassMethods
      def transition_methods
        public_instance_methods - State.public_instance_methods - [:unlock, :locked?]
      end

      def available_methods
        public_instance_methods - State.public_instance_methods
      end
    end

    def locked?
      @locked
    end

    def enter(*args)
      @locked = true
    end

    def unlock(*args)
      @locked = false
    end

    def transition_to(state_class, *args, &block)
      return if @locked

      super(state_class, *args, &block)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
big_machine-1.2.0 lib/big_machine/lock.rb