Class: Tako::Repository

Inherits:
Object
  • Object
show all
Defined in:
lib/tako/repository.rb

Class Method Summary collapse

Class Method Details

.add(shard_name, conf) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/tako/repository.rb', line 21

def add(shard_name, conf)
  shard_name = shard_name.to_sym
  return if proxy_configs[shard_name]

  temporary_class = Class.new(ActiveRecord::Base)
  const_set("TAKO_AR_CLASS_#{shard_name.upcase}", temporary_class)
  temporary_class.establish_connection(conf)

  proxy_classes[shard_name] = temporary_class
  proxy_configs[shard_name] = conf
end

.clearObject



12
13
14
15
16
17
18
19
# File 'lib/tako/repository.rb', line 12

def clear
  proxy_classes.each do |shard_name, proxy_class|
    proxy_class.connection.disconnect!
    remove_const("TAKO_AR_CLASS_#{shard_name.upcase}")
  end
  proxy_configs.clear
  proxy_classes.clear
end

.create_proxy(shard_name) ⇒ Object



33
34
35
# File 'lib/tako/repository.rb', line 33

def create_proxy(shard_name)
  Proxy.new(shard_name, proxy_classes[shard_name.to_sym].connection_without_tako)
end

.proxy_classesObject



8
9
10
# File 'lib/tako/repository.rb', line 8

def proxy_classes
  @proxy_classes ||= {}
end

.proxy_configsObject



4
5
6
# File 'lib/tako/repository.rb', line 4

def proxy_configs
  @proxy_configs ||= {}
end

.shard_namesObject



37
38
39
# File 'lib/tako/repository.rb', line 37

def shard_names
  proxy_configs.keys
end