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