Sha256: ff847421b0fcd20afabfb7590ed85a990d8854b4cc35815a304ebca73664e23b

Contents?: true

Size: 700 Bytes

Versions: 6

Compression:

Stored size: 700 Bytes

Contents

# Database backed system-wide
module Flip
  class DatabaseStrategy < AbstractStrategy

    def initialize(model_klass = Feature)
      @klass = model_klass
    end

    def description
      "Database backed, applies to all users."
    end

    def knows? definition
      !!feature(definition)
    end

    def on? definition
      feature(definition).enabled?
    end

    def switchable?
      true
    end

    def switch! key, enable
      @klass.find_or_initialize_by_key(key).update_attributes! enabled: enable
    end

    def delete! key
      @klass.find_by_key(key).try(:destroy)
    end

    private

    def feature(definition)
      @klass.find_by_key definition.key
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
flip-0.1.0 lib/flip/database_strategy.rb
flip-0.0.4 lib/flip/database_strategy.rb
flip-0.0.3 lib/flip/database_strategy.rb
flip-0.0.2 lib/flip/database_strategy.rb
flip-0.0.1 lib/flip/database_strategy.rb
flip-0.0.1.alpha2 lib/flip/database_strategy.rb