Module: KVS

Defined in:
lib/kvs.rb

Constant Summary collapse

VERSION =
'0.2.1'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.dirObject

Returns the value of attribute dir.



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

def dir
  @dir
end

Class Method Details

.<<(value) ⇒ Object



9
10
11
12
13
# File 'lib/kvs.rb', line 9

def <<(value)
  key = key_gen(value)
  self[id] = value
  key
end

.[](key) ⇒ Object



15
16
17
18
19
# File 'lib/kvs.rb', line 15

def [](key)
  path = file_of(key)
  return nil unless File.exists?(path)
  File.read(path)
end

.[]=(key, value) ⇒ Object



21
22
23
# File 'lib/kvs.rb', line 21

def []=(key, value)
  File.open(file_of(key), 'wb') { |f| f << value.to_s }
end

.delete(key) ⇒ Object



25
26
27
28
29
# File 'lib/kvs.rb', line 25

def delete(key)
  path = file_of(key)
  File.delete(path) if File.exists?(path)
  nil
end

.file_of(key) ⇒ Object

Raises:

  • (ArgumentError)


31
32
33
34
35
36
# File 'lib/kvs.rb', line 31

def file_of(key)
  key = key.to_s
  raise ArgumentError, 'invalid key' unless key =~ /^[\w]+$/
  raise "dir is not specified" unless dir
  File.join(dir, key)
end

.key_gen(value) ⇒ Object



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

def key_gen(value)
  Digest::SHA1.hexdigest(value.to_s)
end