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