Module: FeatureFlagger::Model::ClassMethods
- Defined in:
- lib/feature_flagger/model.rb
Instance Method Summary collapse
- #all_released_ids_for(*feature_key) ⇒ Object
- #cleanup_detached(*feature_key) ⇒ Object
- #detached_feature_keys ⇒ Object
- #feature_flagger {|feature_flagger_model_settings| ... } ⇒ Object
- #feature_flagger_identifier ⇒ Object
- #feature_flagger_model_settings ⇒ Object
- #release_id(resource_id, *feature_key) ⇒ Object
- #release_to_all(*feature_key) ⇒ Object
- #released_features_to_all ⇒ Object
- #released_id?(resource_id, *feature_key) ⇒ Boolean
- #released_to_all?(*feature_key) ⇒ Boolean
- #rollout_resource_name ⇒ Object
- #unrelease_id(resource_id, *feature_key) ⇒ Object
- #unrelease_to_all(*feature_key) ⇒ Object
Instance Method Details
#all_released_ids_for(*feature_key) ⇒ Object
61 62 63 64 65 |
# File 'lib/feature_flagger/model.rb', line 61 def all_released_ids_for(*feature_key) feature_key.flatten! feature = Feature.new(feature_key, feature_flagger_model_settings.entity_name) FeatureFlagger.control.resource_ids(feature.key) end |
#cleanup_detached(*feature_key) ⇒ Object
93 94 95 96 97 98 |
# 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 ⇒ Object
86 87 88 89 90 91 |
# 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| ... } ⇒ Object
41 42 43 44 |
# 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 ⇒ Object
117 118 119 |
# 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 ⇒ Object
110 111 112 113 114 115 |
# 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) ⇒ Object
51 52 53 54 |
# 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) ⇒ Object
67 68 69 70 |
# 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 ⇒ Object
77 78 79 |
# File 'lib/feature_flagger/model.rb', line 77 def released_features_to_all FeatureFlagger.control.released_features_to_all end |
#released_id?(resource_id, *feature_key) ⇒ Boolean
46 47 48 49 |
# File 'lib/feature_flagger/model.rb', line 46 def released_id?(resource_id, *feature_key) feature = Feature.new(feature_key, feature_flagger_model_settings.entity_name) FeatureFlagger.control.released?(feature.key, resource_id) end |
#released_to_all?(*feature_key) ⇒ Boolean
81 82 83 84 |
# File 'lib/feature_flagger/model.rb', line 81 def released_to_all?(*feature_key) feature = Feature.new(feature_key, feature_flagger_model_settings.entity_name) FeatureFlagger.control.released_to_all?(feature.key) end |
#rollout_resource_name ⇒ Object
100 101 102 103 104 105 106 107 108 |
# 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) ⇒ Object
56 57 58 59 |
# 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) ⇒ Object
72 73 74 75 |
# 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 |