Module: Zlk

Defined in:
lib/zlk.rb,
lib/zlk/lock.rb,
lib/zlk/config.rb,
lib/zlk/version.rb,
lib/zlk/lockable.rb,
lib/zlk/null_lock.rb

Defined Under Namespace

Modules: Lockable Classes: Config, Lock, NullLock

Constant Summary collapse

VERSION =
"0.2.1"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.mutexObject

Returns the value of attribute mutex.



7
8
9
# File 'lib/zlk.rb', line 7

def mutex
  @mutex
end

Class Method Details

.configObject



55
56
57
58
59
60
61
# File 'lib/zlk.rb', line 55

def config
  @config ||= begin
    yaml = ERB.new(File.read(config_file)).result
    hash = YAML.load(yaml)
    Zlk::Config.new(hash[env]) if hash
  end
end

.config_fileObject



51
52
53
# File 'lib/zlk.rb', line 51

def config_file
  @config_file
end

.config_file=(filepath) ⇒ Object



46
47
48
49
# File 'lib/zlk.rb', line 46

def config_file=(filepath)
  @config_file = filepath
  @config = nil
end

.connection_poolObject

Lazy initialization



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/zlk.rb', line 19

def connection_pool
  return @connection_pool if @connection_pool

  mutex.synchronize do
    hosts = config.hosts.join(',')

    @connection_pool = ZK::Pool::Simple.new(
      hosts,
      config.pool,
      chroot: config.chroot,
      timeout: config.connection_timeout,
      ephemeral: true
    )
  end

  @connection_pool
end

.create_lock(path) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/zlk.rb', line 10

def create_lock(path)
  if config.use_fake_locks?
    NullLock.new
  else
    Lock.new(path)
  end
end

.envObject



42
43
44
# File 'lib/zlk.rb', line 42

def env
  @env
end

.env=(env) ⇒ Object



37
38
39
40
# File 'lib/zlk.rb', line 37

def env=(env)
  @env = env
  @config = nil
end