Module: Seabright::Storage::ClassMethods

Defined in:
lib/redis_object/storage.rb

Instance Method Summary collapse

Instance Method Details

#adapterObject



45
46
47
# File 'lib/redis_object/storage.rb', line 45

def adapter
  @adapter ||= config[:adapter].to_sym || :Redis
end

#adaptersObject



41
42
43
# File 'lib/redis_object/storage.rb', line 41

def adapters
  @@adapters ||= {}
end

#config(id = store_name) ⇒ Object



57
58
59
# File 'lib/redis_object/storage.rb', line 57

def config(id=store_name)
  configs[id]
end

#configsObject



53
54
55
# File 'lib/redis_object/storage.rb', line 53

def configs
  @@conf ||= {}
end

#configure_store(conf, id = store_name, *ids) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/redis_object/storage.rb', line 22

def configure_store(conf,id=store_name,*ids)
  configs[id] = conf
  ids.each do |i|
    configs[i] = conf
  end
  store(id)
end

#dump_stores_to_files(path) ⇒ Object



65
66
67
68
69
70
71
72
73
# File 'lib/redis_object/storage.rb', line 65

def dump_stores_to_files(path)
  raise "Directory does not exist!" unless Dir.exists?(File.dirname(path))
  adapters.each do |name,adptr|
    if adptr.respond_to? :dump_to_file
      Log.info "Dumping #{name} into #{path}/#{name.to_s}.dump"
      adptr.dump_to_file("#{path}/#{name.to_s}.dump")
    end
  end
end

#reconnect!Object



35
36
37
38
39
# File 'lib/redis_object/storage.rb', line 35

def reconnect!
  adapters.each do |k,v|
    v.reconnect!
  end
end

#restore_stores_from_files(path) ⇒ Object



75
76
77
78
79
80
81
82
83
84
# File 'lib/redis_object/storage.rb', line 75

def restore_stores_from_files(path)
  raise "Directory does not exist!" unless Dir.exists?(File.dirname(path))
  Dir.glob(path + "/*.dump").each do |file|
    name = file.gsub(/\.[^\.]+$/,'').gsub(/.*\//,'').to_sym
    if (stor = store(name)) && stor.respond_to?(:restore_from_file)
      Log.info "Restoring #{name} from #{file}"
      stor.restore_from_file(file)
    end
  end
end

#set_storage(adp = adapter) ⇒ Object



14
15
16
# File 'lib/redis_object/storage.rb', line 14

def set_storage(adp=adapter)
  @adapter = adp
end

#store(id = store_name) ⇒ Object



18
19
20
# File 'lib/redis_object/storage.rb', line 18

def store(id=store_name)
  adapters[id] ||= const_get(adapter).new(config(id))
end

#store_nameObject



49
50
51
# File 'lib/redis_object/storage.rb', line 49

def store_name
  @store_name ||= :global
end

#storesObject



61
62
63
# File 'lib/redis_object/storage.rb', line 61

def stores
  adapters
end

#use_store(id) ⇒ Object



30
31
32
33
# File 'lib/redis_object/storage.rb', line 30

def use_store(id)
  raise "Cannot use non-existent store: #{id}" unless config(id)
  @store_name = id.to_sym
end