Sha256: cb1481c3c3a7c10500a3182a066d17c05621242ca2f7fab78264eee77d86f4e1

Contents?: true

Size: 588 Bytes

Versions: 4

Compression:

Stored size: 588 Bytes

Contents

require 'flipper'

module Flipper
  module Adapters
    # Public: Adapter that wraps another adapter and raises for any writes.
    class ReadOnly < Wrapper
      WRITE_METHODS = %i[add remove clear enable disable]

      class WriteAttempted < Error
        def initialize(message = nil)
          super(message || 'write attempted while in read only mode')
        end
      end

      def read_only?
        true
      end

      private

      def wrap(method, *args, **kwargs)
        raise WriteAttempted if WRITE_METHODS.include?(method)

        yield
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
flipper-1.3.2 lib/flipper/adapters/read_only.rb
flipper-1.3.1 lib/flipper/adapters/read_only.rb
flipper-1.3.0 lib/flipper/adapters/read_only.rb
flipper-1.3.0.pre lib/flipper/adapters/read_only.rb