module FeatureFlagger::Model::ClassMethods
Public Instance Methods
all_released_ids_for(*feature_key, **options)
click to toggle source
# File lib/feature_flagger/model.rb, line 61 def all_released_ids_for(*feature_key, **options) feature_key.flatten! feature = Feature.new(feature_key, feature_flagger_model_settings.entity_name) FeatureFlagger.control.resource_ids(feature.key, options) end
cleanup_detached(*feature_key)
click to toggle source
# File lib/feature_flagger/model.rb, line 93 def cleanup_detached(*feature_key) complete_feature_key = feature_key.map(&:to_s).insert(0, feature_flagger_model_settings.entity_name) key_value = FeatureFlagger.config.info.dig(*complete_feature_key) raise "key is still mapped" if key_value FeatureFlagger.control.unrelease_to_all(complete_feature_key.join(':')) end
detached_feature_keys()
click to toggle source
# File lib/feature_flagger/model.rb, line 86 def detached_feature_keys rollout_resource_name = feature_flagger_model_settings.entity_name persisted_features = FeatureFlagger.control.search_keys("#{rollout_resource_name}:*").to_a mapped_feature_keys = FeatureFlagger.config.mapped_feature_keys(rollout_resource_name) (persisted_features - mapped_feature_keys).map { |key| key.sub("#{rollout_resource_name}:",'') } end
feature_flagger() { |feature_flagger_model_settings| ... }
click to toggle source
# File lib/feature_flagger/model.rb, line 41 def feature_flagger raise ArgumentError unless block_given? yield feature_flagger_model_settings end
feature_flagger_identifier()
click to toggle source
# File lib/feature_flagger/model.rb, line 117 def feature_flagger_identifier public_send(feature_flagger_model_settings.identifier_field) end
feature_flagger_model_settings()
click to toggle source
# File lib/feature_flagger/model.rb, line 110 def feature_flagger_model_settings @feature_flagger_model_settings ||= FeatureFlagger::ModelSettings.new( identifier_field: :id, entity_name: rollout_resource_name ) end
release_id(resource_id, *feature_key)
click to toggle source
# File lib/feature_flagger/model.rb, line 51 def release_id(resource_id, *feature_key) feature = Feature.new(feature_key, feature_flagger_model_settings.entity_name) FeatureFlagger.control.release(feature.key, resource_id) end
release_to_all(*feature_key)
click to toggle source
# File lib/feature_flagger/model.rb, line 67 def release_to_all(*feature_key) feature = Feature.new(feature_key, feature_flagger_model_settings.entity_name) FeatureFlagger.control.release_to_all(feature.key) end
released_features_to_all(options = {})
click to toggle source
# File lib/feature_flagger/model.rb, line 77 def released_features_to_all(options = {}) FeatureFlagger.control.released_features_to_all(options) end
released_id?(resource_id, *feature_key, **options)
click to toggle source
# File lib/feature_flagger/model.rb, line 46 def released_id?(resource_id, *feature_key, **options) feature = Feature.new(feature_key, feature_flagger_model_settings.entity_name) FeatureFlagger.control.released?(feature.key, resource_id, options) end
released_to_all?(*feature_key, **options)
click to toggle source
# File lib/feature_flagger/model.rb, line 81 def released_to_all?(*feature_key, **options) feature = Feature.new(feature_key, feature_flagger_model_settings.entity_name) FeatureFlagger.control.released_to_all?(feature.key, options) end
rollout_resource_name()
click to toggle source
# File lib/feature_flagger/model.rb, line 100 def rollout_resource_name klass_name = self.to_s klass_name.gsub!(/::/, '_') klass_name.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2') klass_name.gsub!(/([a-z\d])([A-Z])/,'\1_\2') klass_name.tr!("-", "_") klass_name.downcase! klass_name end
unrelease_id(resource_id, *feature_key)
click to toggle source
# File lib/feature_flagger/model.rb, line 56 def unrelease_id(resource_id, *feature_key) feature = Feature.new(feature_key, feature_flagger_model_settings.entity_name) FeatureFlagger.control.unrelease(feature.key, resource_id) end
unrelease_to_all(*feature_key)
click to toggle source
# File lib/feature_flagger/model.rb, line 72 def unrelease_to_all(*feature_key) feature = Feature.new(feature_key, feature_flagger_model_settings.entity_name) FeatureFlagger.control.unrelease_to_all(feature.key) end