kvj 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/file_connector.rb +6 -5
- data/lib/kvj.rb +32 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05ff9c7e30c82506812d379073f6d00de58d37c6
|
4
|
+
data.tar.gz: a19ad513e5513dfb4d7af19a05ad5f99a4a7f5ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: caf5f3baf60c37d94d19721250307337e08b6f47004943c8580cbe74f3941f5423739890e52fbcec414d652c148cf39f39b7ac46087e5d93317764eed81f8b3d
|
7
|
+
data.tar.gz: df224a20c4c42ee7fa453ac5c53bc49892573f3e18242eceba38c1eb39a34f681890f9c57b4b75308c240f3c1b1b15127f27d791279fcb58d0b1ff65ae413ae7
|
data/lib/file_connector.rb
CHANGED
@@ -8,7 +8,7 @@ class FileConnector
|
|
8
8
|
|
9
9
|
def initialize(name, directory)
|
10
10
|
@file_path = directory + name.to_s + '.json'
|
11
|
-
create_file unless
|
11
|
+
create_file unless FileConnector.exist(name, directory)
|
12
12
|
@file = File.open(@file_path, File::RDWR)
|
13
13
|
end
|
14
14
|
|
@@ -24,12 +24,13 @@ class FileConnector
|
|
24
24
|
read
|
25
25
|
end
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
File.file?(@file_path)
|
27
|
+
def self.exist(name, directory)
|
28
|
+
file_path = directory + name.to_s + '.json'
|
29
|
+
File.file?(file_path)
|
31
30
|
end
|
32
31
|
|
32
|
+
private
|
33
|
+
|
33
34
|
def create_file
|
34
35
|
# creat directory
|
35
36
|
dirname = File.dirname(@file_path)
|
data/lib/kvj.rb
CHANGED
@@ -8,9 +8,18 @@ CONFIG = YAML.load_file('config/kvj_config.yml')
|
|
8
8
|
class KVJ
|
9
9
|
extend BaseManager
|
10
10
|
|
11
|
-
def
|
11
|
+
def self.create(database)
|
12
12
|
directory = CONFIG['base_directory']
|
13
|
-
|
13
|
+
return new(database, directory) unless FileConnector.exist(database, directory)
|
14
|
+
STDERR.puts "Request to initialize a new database : #{database} but alread exists. "
|
15
|
+
false
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.connect(database)
|
19
|
+
directory = CONFIG['base_directory']
|
20
|
+
return new(database, directory) if FileConnector.exist(database, directory)
|
21
|
+
STDERR.puts "Request to connect to database : #{database} but does not exists. "
|
22
|
+
false
|
14
23
|
end
|
15
24
|
|
16
25
|
def write(key, value)
|
@@ -18,13 +27,16 @@ class KVJ
|
|
18
27
|
hash = @file_connector.read
|
19
28
|
hash[key] = value
|
20
29
|
@file_connector.write(hash)
|
30
|
+
return true
|
21
31
|
ensure
|
22
32
|
@file_connector.release_lock
|
23
33
|
end
|
24
34
|
|
25
35
|
def read(key)
|
26
36
|
@file_connector.grab_sh_lock
|
27
|
-
@file_connector.read
|
37
|
+
data = @file_connector.read
|
38
|
+
return false unless key_exist(data, key, 'read')
|
39
|
+
return data[key]
|
28
40
|
ensure
|
29
41
|
@file_connector.release_lock
|
30
42
|
end
|
@@ -38,16 +50,28 @@ class KVJ
|
|
38
50
|
|
39
51
|
def delete(key)
|
40
52
|
@file_connector.grab_ex_lock
|
41
|
-
|
42
|
-
|
53
|
+
data = @file_connector.read
|
54
|
+
return false unless key_exist(data, key, 'delete')
|
55
|
+
data.delete(key)
|
43
56
|
@file_connector.write(hash)
|
44
57
|
ensure
|
45
58
|
@file_connector.release_lock
|
46
59
|
end
|
47
60
|
|
48
|
-
class << self
|
49
|
-
alias connect new
|
50
|
-
end
|
51
61
|
alias []= write
|
52
62
|
alias [] read
|
63
|
+
|
64
|
+
def key_exist(data, key, action)
|
65
|
+
return true if data.key?(key)
|
66
|
+
STDERR.puts "Request to #{action} key : '#{key}' does not exist in database : '#{@database}' "
|
67
|
+
false
|
68
|
+
end
|
69
|
+
|
70
|
+
def initialize(database, directory)
|
71
|
+
@database = database
|
72
|
+
@file_connector = FileConnector.new(database, directory)
|
73
|
+
end
|
74
|
+
|
75
|
+
private :key_exist
|
76
|
+
private_class_method :new
|
53
77
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kvj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RundongGao
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|