Select Git revision
Forked from
GitLab.org / GitLab FOSS
2 commits behind, 3650 commits ahead of the upstream repository.
-
Rémy Coutable authored
This is a follow-up for !12362 where this was documented but the code was removed in the last iteration. Since this can still be useful and this is already supported by the API, I think re-adding the code was the best course of action. Signed-off-by:
Rémy Coutable <remy@rymai.me>
Rémy Coutable authoredThis is a follow-up for !12362 where this was documented but the code was removed in the last iteration. Since this can still be useful and this is already supported by the API, I think re-adding the code was the best course of action. Signed-off-by:
Rémy Coutable <remy@rymai.me>
feature.rb 1.62 KiB
require 'flipper/adapters/active_record'
class Feature
# Classes to override flipper table names
class FlipperFeature < Flipper::Adapters::ActiveRecord::Feature
# Using `self.table_name` won't work. ActiveRecord bug?
superclass.table_name = 'features'
end
class FlipperGate < Flipper::Adapters::ActiveRecord::Gate
superclass.table_name = 'feature_gates'
end
class << self
delegate :group, to: :flipper
def all
flipper.features.to_a
end
def get(key)
flipper.feature(key)
end
def persisted?(feature)
# Flipper creates on-memory features when asked for a not-yet-created one.
# If we want to check if a feature has been actually set, we look for it
# on the persisted features list.
all.map(&:name).include?(feature.name)
end
def enabled?(key, thing = nil)
get(key).enabled?(thing)
end
def enable(key, thing = true)
get(key).enable(thing)
end
def disable(key, thing = false)
get(key).disable(thing)
end
def enable_group(key, group)
get(key).enable_group(group)
end
def disable_group(key, group)
get(key).disable_group(group)
end
def flipper
@flipper ||= begin
adapter = Flipper::Adapters::ActiveRecord.new(
feature_class: FlipperFeature, gate_class: FlipperGate)
Flipper.new(adapter)
end
end
# This method is called from config/initializers/flipper.rb and can be used
# to register Flipper groups.
# See https://docs.gitlab.com/ee/development/feature_flags.html#feature-groups
def register_feature_groups
end
end
end