class Flipflop::Strategies::SequelStrategy
Public Class Methods
default_description()
click to toggle source
# File lib/flipflop/strategies/sequel_strategy.rb, line 5 def default_description "Stores features in database. Applies to all users." end
define_feature_class()
click to toggle source
# File lib/flipflop/strategies/sequel_strategy.rb, line 9 def define_feature_class return Flipflop::Feature if defined?(Flipflop::Feature) model = Class.new(Sequel::Model(:flipflop_features)) model.plugin(:timestamps, force: true, update_on_create: true) model.raise_on_save_failure = true Flipflop.const_set(:Feature, model) end
new(**options)
click to toggle source
Calls superclass method
Flipflop::Strategies::AbstractStrategy::new
# File lib/flipflop/strategies/sequel_strategy.rb, line 20 def initialize(**options) @class = options.delete(:class) || self.class.define_feature_class if !@class.kind_of?(Class) @class = ActiveSupport::Inflector.constantize(@class.to_s) end super(**options) end
Public Instance Methods
clear!(feature)
click to toggle source
# File lib/flipflop/strategies/sequel_strategy.rb, line 42 def clear!(feature) find(feature).try(:destroy) end
enabled?(feature)
click to toggle source
# File lib/flipflop/strategies/sequel_strategy.rb, line 32 def enabled?(feature) find(feature).try(:enabled?) end
switch!(feature, enabled)
click to toggle source
# File lib/flipflop/strategies/sequel_strategy.rb, line 36 def switch!(feature, enabled) record = find_or_new(feature) record.enabled = enabled record.save end
switchable?()
click to toggle source
# File lib/flipflop/strategies/sequel_strategy.rb, line 28 def switchable? true end
Protected Instance Methods
find(feature)
click to toggle source
# File lib/flipflop/strategies/sequel_strategy.rb, line 52 def find(feature) @class.where(key: feature.to_s).first end
find_or_new(feature)
click to toggle source
# File lib/flipflop/strategies/sequel_strategy.rb, line 48 def find_or_new(feature) find(feature) || @class.new(key: feature.to_s) end