class FlipFab::ContextualFeature
Attributes
context[R]
feature[R]
Public Class Methods
new(feature, context)
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 5 def initialize(feature, context) @feature = feature @context = context return unless overridden? @state = override persist end
Public Instance Methods
as_json(options = {})
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 14 def as_json(options = {}) { 'feature' => feature.as_json(options) } end
disable()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 32 def disable self.state = :disabled end
disabled?()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 24 def disabled? !enabled? end
enable()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 28 def enable self.state = :enabled end
enabled?()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 20 def enabled? state == :enabled end
persist()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 44 def persist persistence_adapters.each { |adapter| adapter.write state } end
state=(value)
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 36 def state=(value) raise "Invalid state provided: `#{value}`, possible states are :enabled, :disabled" unless %i[enabled disabled].include? value return if overridden? @state = value persist end
Private Instance Methods
default_state()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 70 def default_state feature.default end
first_adapter_with_state()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 66 def first_adapter_with_state persistence_adapters.detect { |adapter| !adapter.read.nil? } end
overridden?()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 83 def overridden? !override.nil? end
override()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 74 def override return unless context.respond_to? :params override = context.params[feature.name.to_s] return unless %w[enabled disabled].include? override override.to_sym end
persistence_adapters()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 50 def persistence_adapters @persistence_adapters ||= feature.persistence_adapters.map { |adapter_class| adapter_class.new feature.name, context } end
state()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 54 def state @state ||= state_in_context? ? state_from_context : default_state end
state_from_context()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 62 def state_from_context first_adapter_with_state.read end
state_in_context?()
click to toggle source
# File lib/flip_fab/contextual_feature.rb, line 58 def state_in_context? !first_adapter_with_state.nil? end