Sha256: 0d59ca9b278cd91623b0b86699836b1a46b56f19fa292475a3e941991c80367e
Contents?: true
Size: 1.05 KB
Versions: 14
Compression:
Stored size: 1.05 KB
Contents
begin require "batch" rescue LoadError => e e.message << "\nTry `gem install batch`." end module Ohm module Utils class Upgrade def redis Ohm.redis end attr :models attr :types def initialize(models) @models = models @types = Hash.new { |hash, model| hash[model] = {} } end def run models.each do |model| ns = Ohm::Key.new(model, redis) puts "Upgrading #{model}..." Batch.each(ns[:all].smembers) do |id| instance = ns[id] attrs = [] deletes = [] redis.keys(instance["*"]).each do |key| field = key[instance.size.succ..-1] type = (types[model][field] ||= redis.type(key).to_sym) if type == :string attrs << field attrs << redis.get(key) deletes << key end end redis.hmset(instance, *attrs) redis.del(*deletes) end end end end end end
Version data entries
14 entries across 14 versions & 1 rubygems