From 41baecbf35d9018ae11ebfd85b8f0c847ea4d7c0 Mon Sep 17 00:00:00 2001 From: Garret Alfert Date: Wed, 7 Sep 2016 19:58:32 +0200 Subject: [PATCH] Use a MigrationRunner to iterate over all unmigrated users --- migrate_to_single_container.rb | 46 ++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/migrate_to_single_container.rb b/migrate_to_single_container.rb index 049c0f0..35d5827 100755 --- a/migrate_to_single_container.rb +++ b/migrate_to_single_container.rb @@ -129,15 +129,45 @@ class Migrator end end -username = ARGV[0] +class MigrationRunner + + attr_accessor :environment, :settings + + def initialize + @environment = ENV["ENVIRONMENT"] || "staging" + @settings = YAML.load(File.read('config.yml'))[@environment] + end + + def migrate + while username = pick_unmigrated_user + migrator = Migrator.new username + migrator.migrate + end + end + + def unmigrated_users + redis.hgetall("rs:container_migration").select { |_, value| + value == "not_started" + }.keys + end + + def pick_unmigrated_user + unmigrated_users.sample # pick a random user from list + end + + def redis + @redis ||= Redis.new(@settings["redis"].symbolize_keys) + end -unless username - puts "No username given." - puts "Usage:" - puts "ENVIRONMENT=staging ./migrate_to_single_container.rb " - exit 1 end -migrator = Migrator.new username -migrator.migrate +username = ARGV[0] + +if username + migrator = Migrator.new username + migrator.migrate +else + runner = MigrationRunner.new + runner.migrate +end