persist 0.0.8 → 0.0.9

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.
@@ -33,6 +33,35 @@ module Persist
33
33
  @db
34
34
  end
35
35
 
36
+ def initialize_db
37
+ @db || pull
38
+ end
39
+
40
+ # Public: Process multiple transactions to set table values and commit if
41
+ # all transactions are successful.
42
+ #
43
+ # block - A required block that processes multiple transactions that
44
+ # succeed or fail together to ensure that data is not left in a
45
+ # transitory state.
46
+ #
47
+ # Examples
48
+ #
49
+ # Persist.transaction do |db|
50
+ # db[:weather] = 'sunny'
51
+ # db.delete[:author]
52
+ # end
53
+ # # => nil
54
+ #
55
+ # Returns nothing.
56
+ def transaction
57
+ initialize_db
58
+
59
+ @db.transaction do
60
+ yield @db
61
+ @db.commit
62
+ end
63
+ end
64
+
36
65
  # Public: Fetch a list of persistent store root tables.
37
66
  #
38
67
  # Examples
@@ -42,6 +71,8 @@ module Persist
42
71
  #
43
72
  # Returns an Array containing the persistent store root tables.
44
73
  def keys
74
+ initialize_db
75
+
45
76
  @db.transaction true do
46
77
  @db.roots
47
78
  end
@@ -62,6 +93,8 @@ module Persist
62
93
  #
63
94
  # Returns true or false.
64
95
  def key? table
96
+ initialize_db
97
+
65
98
  @db.transaction true do
66
99
  @db.root? table
67
100
  end
@@ -82,6 +115,8 @@ module Persist
82
115
  #
83
116
  # Returns the value stored in the fetched table.
84
117
  def [] table
118
+ initialize_db
119
+
85
120
  @db.transaction true do
86
121
  @db[table]
87
122
  end
@@ -107,6 +142,8 @@ module Persist
107
142
  #
108
143
  # Returns the value stored in the fetched table.
109
144
  def fetch table, default = nil
145
+ initialize_db
146
+
110
147
  @db.transaction true do
111
148
  @db.fetch table, default
112
149
  end
@@ -125,34 +162,13 @@ module Persist
125
162
  #
126
163
  # Returns the value of the table.
127
164
  def []= table, value
165
+ initialize_db
166
+
128
167
  @db.transaction do
129
168
  @db[table] = value
130
169
  end
131
170
  end
132
-
133
- # Public: Process multiple transactions to set table values and commit if
134
- # all transactions are successful.
135
- #
136
- # block - A required block that processes multiple transactions that
137
- # succeed or fail together to ensure that data is not left in a
138
- # transitory state.
139
- #
140
- # Examples
141
- #
142
- # Persist.transaction do
143
- # Persist.db[:weather] = 'sunny'
144
- # Persist.db.delete[:author]
145
- # end
146
- # # => nil
147
- #
148
- # Returns nothing.
149
- def transaction &block
150
- @db.transaction do
151
- yield
152
- @db.commit
153
- end
154
- end
155
-
171
+
156
172
  # Public: Delete one or more entire root tables from the persistent store.
157
173
  #
158
174
  # tables - One or more Symbols corresponding to root table keys in the
@@ -168,6 +184,8 @@ module Persist
168
184
  #
169
185
  # Returns nothing.
170
186
  def delete *tables
187
+ initialize_db
188
+
171
189
  @db.transaction do
172
190
  tables.each do |table|
173
191
  @db.delete table
@@ -185,6 +203,8 @@ module Persist
185
203
  #
186
204
  # Returns the path to the data file as a String.
187
205
  def path
206
+ initialize_db
207
+
188
208
  @db.path
189
209
  end
190
210
  end
@@ -1,5 +1,5 @@
1
1
  module Persist
2
- MAJOR, MINOR, TINY = 0, 0, 8
2
+ MAJOR, MINOR, TINY = 0, 0, 9
3
3
 
4
4
  def self.version
5
5
  [MAJOR, MINOR, TINY].join '.'
data/test/test_persist.rb CHANGED
@@ -69,19 +69,19 @@ describe Persist do
69
69
 
70
70
  describe "a Persist.transaction do" do
71
71
  it "sets multiple keys when commited" do
72
- Persist.transaction do
73
- Persist.db[:one] = 'first'
74
- Persist.db[:two] = 'second'
72
+ Persist.transaction do |db|
73
+ db[:one] = 'first'
74
+ db[:two] = 'second'
75
75
  end
76
76
  assert_equal 'first', Persist[:one]
77
77
  assert_equal 'second', Persist[:two]
78
78
  end
79
79
 
80
80
  it "sets no keys when aborted" do
81
- Persist.transaction do
82
- Persist.db[:pre] = 'before'
83
- Persist.db.abort
84
- Persist.db[:post] = 'after'
81
+ Persist.transaction do |db|
82
+ db[:pre] = 'before'
83
+ db.abort
84
+ db[:post] = 'after'
85
85
  end
86
86
  assert_nil Persist[:pre]
87
87
  assert_nil Persist[:post]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: persist
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-25 00:00:00.000000000 Z
12
+ date: 2012-06-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest