Class: Flipflop::Strategies::SequelStrategy

Inherits:
AbstractStrategy show all
Defined in:
lib/flipflop/strategies/sequel_strategy.rb

Instance Attribute Summary

Attributes inherited from AbstractStrategy

#description, #key, #name, #title

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from AbstractStrategy

default_name, #hidden?, #reset!

Constructor Details

#initialize(**options) ⇒ SequelStrategy

Returns a new instance of SequelStrategy.



20
21
22
23
24
25
26
# 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

Class Method Details

.default_descriptionObject



5
6
7
# File 'lib/flipflop/strategies/sequel_strategy.rb', line 5

def default_description
  "Stores features in database. Applies to all users."
end

.define_feature_classObject



9
10
11
12
13
14
15
16
17
# 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

Instance Method Details

#clear!(feature) ⇒ Object



42
43
44
# File 'lib/flipflop/strategies/sequel_strategy.rb', line 42

def clear!(feature)
  find(feature).try(:destroy)
end

#enabled?(feature) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/flipflop/strategies/sequel_strategy.rb', line 32

def enabled?(feature)
  find(feature).try(:enabled?)
end

#switch!(feature, enabled) ⇒ Object



36
37
38
39
40
# 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?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/flipflop/strategies/sequel_strategy.rb', line 28

def switchable?
  true
end