ssd 0.1.5 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cc80c8adfe5a1357a0d2db0b9d58e8b4065dbda2
4
- data.tar.gz: 673878b621506e2b3c05f903e39acab7739024d8
3
+ metadata.gz: 0825d84e4c81d08aff287bb4ec45ad3c076b652d
4
+ data.tar.gz: 273829d0588557664e5afbd900ed28b38b59857b
5
5
  SHA512:
6
- metadata.gz: e82b63ae8407f16a14f13d68cfd135b01c64ba81ab36239c6507445507aceb95049bcc847b3c4896b090f5c4f2ece45fd1e31cb0a7d531e80c6423db460588f4
7
- data.tar.gz: 2fb4d4e1c0a42ae5f6567ee549007f12f153f6e0914114d1cdbf7256cb41ec1387809a0a4669549dac47821c81e8ee5dd6626ad093f1368082fc05ed0abb9602
6
+ metadata.gz: a619969e3f149af20609c169b22bfff7c74aba7c192d98a5c2aa14d4c1c1808b61b116777a628a0d46ea2da72f11ce2635cc92842a521a4cf469d4bef02fa173
7
+ data.tar.gz: 1f2f0d24e6bc7189cf6721df3d333a21ad006324b5f8303c981c88fa20bdda768db4ca2f619a80422f716e5c24d61367b759e7640d8dbc98dbd32a07991dea07
data/README.md CHANGED
@@ -4,12 +4,11 @@ SSD is an append-only, file-based, immutable key-value store for Microservices w
4
4
 
5
5
  Key Features
6
6
  =================
7
- - **Scalable** file-based design (each key gets its own file).
7
+ - **Scalable** via a schemaless, thread-safe, file-based design that easily meets your data evolution needs.
8
8
  - **Immutable Append-only** tracks data evolution over time via out-of-the-box UTC timestamped appends (*accountants don't use erasers, otherwise they go to jail*).
9
9
  - **Fault Tolerance** (out-of-the-box transactional operations).
10
- - **Zero External Dependencies for a Measurably Low Technical Debt** (a well-maintained consciously clean lightweight library that prioritizes the sanity of your codebase and takes measures to **NEVER** complect it).
11
- - **Schemaless** (easily meets your data evolution needs).
12
- - **Key-based Rolling-forward\Rolling-back**.
10
+ - **Zero External Dependencies for a Measurably Low Technical Debt** (a well-maintained, consciously clean, lightweight library that prioritizes the sanity of your codebase and takes measures to **NEVER** complect it).
11
+ - **Key-based Forward\Backward Rolling**.
13
12
  - **Super Easy to Learn and Use** (up & running in mins).
14
13
 
15
14
  TODO
@@ -28,7 +27,14 @@ SSD is carefully crafted to scale specially-well with the Microservies Architetu
28
27
 
29
28
  Usage
30
29
  ======
30
+ ```
31
+ gem install ssd
32
+ ```
33
+
31
34
  ```ruby
35
+ require 'sinatra'
36
+ require 'ssd'
37
+
32
38
  module MyApp
33
39
  class User
34
40
  include SSD
data/lib/ssd.rb CHANGED
@@ -5,6 +5,8 @@ require 'pstore'
5
5
  require 'digest'
6
6
 
7
7
  require_relative "./ssd/version"
8
+ require_relative "./ssd/instance_methods"
9
+ require_relative "./ssd/class_methods"
8
10
 
9
11
  $log = Logger.new(STDOUT)
10
12
 
@@ -16,128 +18,4 @@ module SSD
16
18
  base.send :include, InstanceMethods
17
19
  base.extend ClassMethods
18
20
  end
19
-
20
- module InstanceMethods
21
-
22
- def self.included(base)
23
- @@ssd_name = base.new.class.to_s.downcase
24
- end
25
-
26
- attr_accessor :ssd
27
-
28
- def ssd= value
29
- @ssd = value
30
- FileUtils::mkdir_p ".ssd/#{@@ssd_name}"
31
- @@ssd_path = ".ssd/#{@@ssd_name}/#{@ssd}.ssd"
32
- @@ssd_db = PStore.new @@ssd_path, true
33
- @@ssd_db.ultra_safe = true
34
- @@ssd_db.transaction(true) {}
35
- return @@ssd_db
36
- end
37
-
38
- def transaction
39
- @@ssd_db.transaction do
40
- yield @@ssd_db
41
- @@ssd_db.commit
42
- end
43
- end
44
-
45
- def []=
46
- begin
47
- if !@ssd.nil? then
48
- @@ssd_db.transaction do
49
- #todo should be somthing like??? timestamp instead of ssd as a key?? and use .last while reading
50
- @@ssd_db[Time.now.utc.to_s + "_" + Random.new_seed.to_s ] = self
51
- end
52
- else
53
- raise 'ssd key can not be nil. see more (documentation url)'
54
- end
55
- end
56
- end
57
-
58
- alias append! []=
59
- alias save! []=
60
- alias store! []=
61
- end
62
-
63
- module ClassMethods
64
- def self.extended(base)
65
- @@ssd_name = base.new.class.to_s.downcase
66
- #FileUtils::mkdir_p 'DS'
67
- #@@ssd_path = "DS/#{name}.pstore"
68
- #@@ssd_db = PStore.new @@ssd_path, true
69
- #@@ssd_db.ultra_safe = true
70
- #@@ssd_db.transaction(true) {}
71
- #@@ssd_db
72
- end
73
-
74
- def setup ssd
75
- @@ssd = ssd
76
- FileUtils::mkdir_p ".ssd/#{@@ssd_name}"
77
- @@ssd_path = ".ssd/#{@@ssd_name}/#{@@ssd}.ssd"
78
- @@ssd_db = PStore.new @@ssd_path, true
79
- @@ssd_db.ultra_safe = true
80
- @@ssd_db.transaction(true) {}
81
- return @@ssd_db
82
- end
83
-
84
- def last_key ssd
85
- setup ssd
86
- last_key = @@ssd_db.transaction true do
87
- @@ssd_db.roots
88
- end
89
- last_key.last
90
- end
91
-
92
- def keys ssd
93
- setup ssd
94
- @@ssd_db.transaction true do
95
- @@ssd_db.roots
96
- end
97
- end
98
-
99
- def key? ssd
100
- setup ssd
101
- @@ssd_db.transaction true do
102
- @@ssd_db.root? ssd
103
- end
104
- end
105
-
106
- alias exists? key?
107
-
108
- def [] ssd
109
- setup ssd
110
- @@ssd_db.transaction true do
111
- @@ssd_db[ssd]
112
- end
113
- end
114
-
115
- def ssd ssd, default = nil
116
- #TODO add raise if ssd.nil?
117
- last_key = (last_key ssd)
118
- @@ssd_db.transaction true do
119
- @@ssd_db.fetch last_key, default
120
- end
121
- end
122
-
123
- #alias get ssd
124
- #alias find ssd
125
-
126
- def delete *ssds
127
- @@ssd_db.transaction do
128
- ssds.each do |ssd|
129
- @@ssd_db.delete ssd.to_sym
130
- end
131
- @@ssd_db.commit
132
- end
133
- end
134
- alias remove delete
135
-
136
- def count ssd
137
- setup ssd
138
- $log.info("count")
139
- return keys(ssd).count
140
- end
141
- end
142
-
143
21
  end
@@ -0,0 +1,81 @@
1
+ module SSD
2
+ module ClassMethods
3
+ def self.extended(base)
4
+ @@ssd_name = base.new.class.to_s.downcase
5
+ #FileUtils::mkdir_p 'DS'
6
+ #@@ssd_path = "DS/#{name}.pstore"
7
+ #@@ssd_db = PStore.new @@ssd_path, true
8
+ #@@ssd_db.ultra_safe = true
9
+ #@@ssd_db.transaction(true) {}
10
+ #@@ssd_db
11
+ end
12
+
13
+ def setup ssd
14
+ @@ssd = ssd
15
+ FileUtils::mkdir_p ".ssd/#{@@ssd_name}"
16
+ @@ssd_path = ".ssd/#{@@ssd_name}/#{@@ssd}.ssd"
17
+ @@ssd_db = PStore.new @@ssd_path, true
18
+ @@ssd_db.ultra_safe = true
19
+ @@ssd_db.transaction(true) {}
20
+ return @@ssd_db
21
+ end
22
+
23
+ def last_key ssd
24
+ setup ssd
25
+ last_key = @@ssd_db.transaction true do
26
+ @@ssd_db.roots
27
+ end
28
+ last_key.last
29
+ end
30
+
31
+ def keys ssd
32
+ setup ssd
33
+ @@ssd_db.transaction true do
34
+ @@ssd_db.roots
35
+ end
36
+ end
37
+
38
+ def key? ssd
39
+ setup ssd
40
+ @@ssd_db.transaction true do
41
+ @@ssd_db.root? ssd
42
+ end
43
+ end
44
+
45
+ alias exists? key?
46
+
47
+ def [] ssd
48
+ setup ssd
49
+ @@ssd_db.transaction true do
50
+ @@ssd_db[ssd]
51
+ end
52
+ end
53
+
54
+ def ssd ssd, default = nil
55
+ #TODO add raise if ssd.nil?
56
+ last_key = (last_key ssd)
57
+ @@ssd_db.transaction true do
58
+ @@ssd_db.fetch last_key, default
59
+ end
60
+ end
61
+
62
+ #alias get ssd
63
+ #alias find ssd
64
+
65
+ def delete *ssds
66
+ @@ssd_db.transaction do
67
+ ssds.each do |ssd|
68
+ @@ssd_db.delete ssd.to_sym
69
+ end
70
+ @@ssd_db.commit
71
+ end
72
+ end
73
+ alias remove delete
74
+
75
+ def count ssd
76
+ setup ssd
77
+ $log.info("count")
78
+ return keys(ssd).count
79
+ end
80
+ end
81
+ end
File without changes
@@ -0,0 +1,44 @@
1
+ module SSD
2
+ module InstanceMethods
3
+
4
+ def self.included(base)
5
+ @@ssd_name = base.new.class.to_s.downcase
6
+ end
7
+
8
+ attr_accessor :ssd
9
+
10
+ def ssd= value
11
+ @ssd = value
12
+ FileUtils::mkdir_p ".ssd/#{@@ssd_name}"
13
+ @@ssd_path = ".ssd/#{@@ssd_name}/#{@ssd}.ssd"
14
+ @@ssd_db = PStore.new @@ssd_path, true
15
+ @@ssd_db.ultra_safe = true
16
+ @@ssd_db.transaction(true) {}
17
+ return @@ssd_db
18
+ end
19
+
20
+ def transaction
21
+ @@ssd_db.transaction do
22
+ yield @@ssd_db
23
+ @@ssd_db.commit
24
+ end
25
+ end
26
+
27
+ def []=
28
+ begin
29
+ if !@ssd.nil? then
30
+ @@ssd_db.transaction do
31
+ #todo should be somthing like??? timestamp instead of ssd as a key?? and use .last while reading
32
+ @@ssd_db[Time.now.utc.to_s + "_" + Random.new_seed.to_s ] = self
33
+ end
34
+ else
35
+ raise 'ssd key can not be nil. see more (documentation url)'
36
+ end
37
+ end
38
+ end
39
+
40
+ alias append! []=
41
+ alias save! []=
42
+ alias store! []=
43
+ end
44
+ end
data/lib/ssd/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module SSD
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ssd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - zotherstupidguy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-11 00:00:00.000000000 Z
11
+ date: 2016-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -69,8 +69,10 @@ files:
69
69
  - bin/console
70
70
  - bin/repl.rb
71
71
  - bin/setup
72
- - lib/encrypt.rb
73
72
  - lib/ssd.rb
73
+ - lib/ssd/class_methods.rb
74
+ - lib/ssd/encrypt.rb
75
+ - lib/ssd/instance_methods.rb
74
76
  - lib/ssd/version.rb
75
77
  - logo.png
76
78
  - ssd.gemspec
@@ -94,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
96
  version: '0'
95
97
  requirements: []
96
98
  rubyforge_project:
97
- rubygems_version: 2.5.1
99
+ rubygems_version: 2.6.7
98
100
  signing_key:
99
101
  specification_version: 4
100
102
  summary: SSD is an append-only, file-based, immutable key-value store for Microservices