class Consul::KV::Store
Constants
- CannotDeleteError
- CannotReadError
- CannotWriteError
Attributes
conn[R]
Public Class Methods
new(prefix = nil)
click to toggle source
# File lib/consul/kv/store.rb, line 11 def initialize(prefix = nil) @mutex = Mutex.new @conn = Connection.new @prefix = prefix end
Public Instance Methods
delete(key)
click to toggle source
# File lib/consul/kv/store.rb, line 45 def delete(key) resp = nil @mutex.synchronize do resp = conn.delete build(key), true end raise CannotDeleteError unless resp.kind_of?(Net::HTTPSuccess) true end
get(key)
click to toggle source
# File lib/consul/kv/store.rb, line 17 def get(key) resp = nil @mutex.synchronize do resp = conn.get build(key), true end return nil if resp.kind_of?(Net::HTTPNotFound) raise CannotReadError unless resp.kind_of?(Net::HTTPSuccess) json = JSON.parse(resp.body) if json.size > 1 || json.first['Key'] != build(key) json.each_with_object({}) do |item, hsh| hsh[item['Key'].gsub(/\A#{build(key)}\//, '')] = Base64.decode64(item['Value']) end else Base64.decode64 json.first['Value'] end end
Also aliased as: []
put(key, value)
click to toggle source
# File lib/consul/kv/store.rb, line 35 def put(key, value) resp = nil @mutex.synchronize do resp = conn.put build(key), value end raise CannotWriteError unless resp.kind_of?(Net::HTTPSuccess) get key end
Also aliased as: []=
Private Instance Methods
build(key)
click to toggle source
# File lib/consul/kv/store.rb, line 58 def build key return key unless @prefix return @prefix if key == '' "#{@prefix}/#{key}" end