class FeatureFlagger::Storage::FeatureKeysMigration
Public Class Methods
new(from_redis, to_control)
click to toggle source
# File lib/feature_flagger/storage/feature_keys_migration.rb, line 7 def initialize(from_redis, to_control) @from_redis = from_redis @to_control = to_control end
Public Instance Methods
call()
click to toggle source
call migrates features key from the old fashioned to the new format.
It must replicate feature keys with changes:
from “avenue:traffic_lights” => 42 to “avenue:42” => traffic_lights
# File lib/feature_flagger/storage/feature_keys_migration.rb, line 19 def call @from_redis.scan_each(match: "*", count: FeatureFlagger::Storage::Redis::SCAN_EACH_BATCH_SIZE) do |redis_key| # filter out resource_keys next if redis_key.start_with?("#{FeatureFlagger::Storage::Redis::RESOURCE_PREFIX}:") migrate_key(redis_key) end end
Private Instance Methods
feature_released_to_all?(key)
click to toggle source
# File lib/feature_flagger/storage/feature_keys_migration.rb, line 44 def feature_released_to_all?(key) FeatureFlagger::Control::RELEASED_FEATURES == key end
migrate_key(key)
click to toggle source
# File lib/feature_flagger/storage/feature_keys_migration.rb, line 30 def migrate_key(key) return migrate_release_to_all(key) if feature_released_to_all?(key) migrate_release(key) end
migrate_release(key)
click to toggle source
# File lib/feature_flagger/storage/feature_keys_migration.rb, line 48 def migrate_release(key) resource_ids = @from_redis.smembers(key) resource_ids.each do |id| @to_control.release(key, id) end end
migrate_release_to_all(key)
click to toggle source
# File lib/feature_flagger/storage/feature_keys_migration.rb, line 36 def migrate_release_to_all(key) features = @from_redis.smembers(key) features.each do |feature_key| @to_control.release_to_all(feature_key) end end