adapter 0.6.1 → 0.6.2

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.
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  .bundle
2
2
  log
3
3
  pkg
4
+ Gemfile.lock
data/Guardfile CHANGED
@@ -4,9 +4,9 @@ rspec_options = {
4
4
  }
5
5
 
6
6
  guard 'rspec', rspec_options do
7
- watch(%r{^spec/.+_spec\.rb$})
8
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
9
- watch('spec/helper.rb') { "spec" }
7
+ watch(%r{^spec/.+_spec\.rb$}) { "spec" }
8
+ watch(%r{^lib/(.+)\.rb$}) { "spec" }
9
+ watch('spec/helper.rb') { "spec" }
10
10
  watch(%r{lib/adapter/spec/(.+)\.rb}) { "spec" }
11
11
  end
12
12
 
data/README.md CHANGED
@@ -12,8 +12,8 @@ Adapter.define(:memory) do
12
12
  decode(client[key_for(key)])
13
13
  end
14
14
 
15
- def write(key, value)
16
- client[key_for(key)] = encode(value)
15
+ def write(key, attributes)
16
+ client[key_for(key)] = encode(attributes)
17
17
  end
18
18
 
19
19
  def delete(key)
@@ -19,12 +19,12 @@ require 'adapter/memory'
19
19
  # Marshal.load/dump. Also, important to note that this does not affect
20
20
  # the memory adapter which still uses Marshal.
21
21
  Adapter.define(:memory_json, Adapter::Memory) do
22
- def encode(value)
23
- ActiveSupport::JSON.encode(value)
22
+ def encode(attributes)
23
+ ActiveSupport::JSON.encode(attributes)
24
24
  end
25
25
 
26
- def decode(value)
27
- ActiveSupport::JSON.decode(value)
26
+ def decode(attributes)
27
+ ActiveSupport::JSON.decode(attributes)
28
28
  end
29
29
  end
30
30
 
data/lib/adapter.rb CHANGED
@@ -3,15 +3,15 @@ require 'adapter/defaults'
3
3
  require 'adapter/exceptions'
4
4
 
5
5
  module Adapter
6
+ extend self
6
7
  extend Asserts
7
- include Defaults
8
8
 
9
9
  # Stores the definitions for each adapter by name
10
- def self.definitions
10
+ def definitions
11
11
  @definitions ||= {}
12
12
  end
13
13
 
14
- def self.define(name, mod=nil, &block)
14
+ def define(name, mod=nil, &block)
15
15
  definition_module = Module.new
16
16
  definition_module.send(:include, Defaults)
17
17
  definition_module.send(:include, mod) unless mod.nil?
@@ -22,17 +22,17 @@ module Adapter
22
22
  end
23
23
 
24
24
  # Memoizes adapter instances based on their definitions
25
- def self.adapters
25
+ def adapters
26
26
  @adapters ||= {}
27
27
  end
28
28
 
29
- def self.[](name)
29
+ def [](name)
30
30
  assert_valid_adapter(name)
31
31
  adapters[name.to_sym] ||= get_adapter_instance(name)
32
32
  end
33
33
 
34
34
  private
35
- def self.get_adapter_instance(name)
35
+ def get_adapter_instance(name)
36
36
  Class.new do
37
37
  attr_reader :client, :options
38
38
 
@@ -1,9 +1,12 @@
1
1
  module Adapter
2
2
  module Defaults
3
- def fetch(key, value=nil, &block)
3
+ def fetch(key, default_attributes=nil)
4
4
  read(key) || begin
5
- value = block_given? ? yield(key) : value
6
- read(key) || value
5
+ if block_given?
6
+ yield(key)
7
+ else
8
+ default_attributes
9
+ end
7
10
  end
8
11
  end
9
12
 
@@ -21,12 +24,12 @@ module Adapter
21
24
  key
22
25
  end
23
26
 
24
- def encode(value)
25
- value
27
+ def encode(attributes)
28
+ attributes
26
29
  end
27
30
 
28
- def decode(value)
29
- value
31
+ def decode(attributes)
32
+ attributes
30
33
  end
31
34
  end
32
35
  end
@@ -6,8 +6,8 @@ module Adapter
6
6
  decode(client[key_for(key)])
7
7
  end
8
8
 
9
- def write(key, value)
10
- client[key_for(key)] = encode(value)
9
+ def write(key, attributes)
10
+ client[key_for(key)] = encode(attributes)
11
11
  end
12
12
 
13
13
  def delete(key)
@@ -25,9 +25,12 @@ shared_examples_for "an adapter" do
25
25
  adapter.read(key).should be_nil
26
26
  end
27
27
 
28
- it "returns value if key available" do
28
+ it "returns attributes if key available" do
29
29
  adapter.write(key, attributes)
30
- adapter.read(key).should eq(attributes)
30
+ result = adapter.read(key)
31
+ attributes.each do |column, value|
32
+ result[column].should eq(value)
33
+ end
31
34
  end
32
35
  end
33
36
 
@@ -36,9 +39,12 @@ shared_examples_for "an adapter" do
36
39
  adapter.get(key).should be_nil
37
40
  end
38
41
 
39
- it "returns value if key available" do
42
+ it "returns attributes if key available" do
40
43
  adapter.write(key, attributes)
41
- adapter.get(key).should eq(attributes)
44
+ result = adapter.get(key)
45
+ attributes.each do |column, value|
46
+ result[column].should eq(value)
47
+ end
42
48
  end
43
49
  end
44
50
 
@@ -47,9 +53,12 @@ shared_examples_for "an adapter" do
47
53
  adapter[key].should be_nil
48
54
  end
49
55
 
50
- it "returns value if key available" do
56
+ it "returns attributes if key available" do
51
57
  adapter.write(key, attributes)
52
- adapter[key].should eq(attributes)
58
+ result = adapter[key]
59
+ attributes.each do |column, value|
60
+ result[column].should eq(value)
61
+ end
53
62
  end
54
63
  end
55
64
 
@@ -59,21 +68,32 @@ shared_examples_for "an adapter" do
59
68
  adapter.write(key2, attributes2)
60
69
  end
61
70
 
62
- it "returns Hash of keys and values" do
63
- adapter.read_multiple(key, key2).should eq({
64
- key => attributes,
65
- key2 => attributes2,
66
- })
71
+ it "returns Hash of keys and attributes" do
72
+ result = adapter.read_multiple(key, key2)
73
+
74
+ attributes.each do |column, value|
75
+ result[key][column].should eq(value)
76
+ end
77
+
78
+ attributes2.each do |column, value|
79
+ result[key2][column].should eq(value)
80
+ end
67
81
  end
68
82
 
69
83
  context "with mix of keys that are and are not available" do
70
- it "returns Hash of keys and values where unavailable keys are nil" do
71
- adapter.read_multiple(key, key2, 'foo', 'bar').should eq({
72
- key => attributes,
73
- key2 => attributes2,
74
- 'foo' => nil,
75
- 'bar' => nil,
76
- })
84
+ it "returns Hash of keys and attributes where unavailable keys are nil" do
85
+ result = adapter.read_multiple(key, key2, 'foo', 'bar')
86
+
87
+ attributes.each do |column, value|
88
+ result[key][column].should eq(value)
89
+ end
90
+
91
+ attributes2.each do |column, value|
92
+ result[key2][column].should eq(value)
93
+ end
94
+
95
+ result['foo'].should be_nil
96
+ result['bar'].should be_nil
77
97
  end
78
98
  end
79
99
  end
@@ -84,21 +104,32 @@ shared_examples_for "an adapter" do
84
104
  adapter.write(key2, attributes2)
85
105
  end
86
106
 
87
- it "returns Hash of keys and values" do
88
- adapter.get_multiple(key, key2).should eq({
89
- key => attributes,
90
- key2 => attributes2,
91
- })
107
+ it "returns Hash of keys and attributes" do
108
+ result = adapter.get_multiple(key, key2)
109
+
110
+ attributes.each do |column, value|
111
+ result[key][column].should eq(value)
112
+ end
113
+
114
+ attributes2.each do |column, value|
115
+ result[key2][column].should eq(value)
116
+ end
92
117
  end
93
118
 
94
119
  context "with mix of keys that are and are not available" do
95
- it "returns Hash of keys and values where unavailable keys are nil" do
96
- adapter.get_multiple(key, key2, 'foo', 'bar').should eq({
97
- key => attributes,
98
- key2 => attributes2,
99
- 'foo' => nil,
100
- 'bar' => nil,
101
- })
120
+ it "returns Hash of keys and attributes where unavailable keys are nil" do
121
+ result = adapter.get_multiple(key, key2, 'foo', 'bar')
122
+
123
+ attributes.each do |column, value|
124
+ result[key][column].should eq(value)
125
+ end
126
+
127
+ attributes2.each do |column, value|
128
+ result[key2][column].should eq(value)
129
+ end
130
+
131
+ result['foo'].should be_nil
132
+ result['bar'].should be_nil
102
133
  end
103
134
  end
104
135
  end
@@ -115,9 +146,9 @@ shared_examples_for "an adapter" do
115
146
  end
116
147
 
117
148
  describe "#fetch" do
118
- context "with key not stored" do
119
- context "with default value" do
120
- it "returns default value" do
149
+ context "with key not available" do
150
+ context "with default attributes" do
151
+ it "returns default" do
121
152
  adapter.fetch(key, {}).should eq({})
122
153
  end
123
154
  end
@@ -129,11 +160,14 @@ shared_examples_for "an adapter" do
129
160
  end
130
161
  end
131
162
 
132
- context "with key that is stored" do
133
- context "with default value" do
134
- it "returns key value instead of default" do
163
+ context "with key that is available" do
164
+ context "with default attributes" do
165
+ it "returns result of read instead of default" do
135
166
  adapter.write(key, attributes2)
136
- adapter.fetch(key, attributes).should eq(attributes2)
167
+ result = adapter.fetch(key, attributes)
168
+ attributes2.each do |column, value|
169
+ result[column].should eq(value)
170
+ end
137
171
  end
138
172
  end
139
173
 
@@ -149,53 +183,61 @@ shared_examples_for "an adapter" do
149
183
  end
150
184
 
151
185
  describe "#write" do
152
- it "sets key to value" do
186
+ it "sets key to attributes" do
153
187
  adapter.write(key, attributes)
154
- adapter.read(key).should eq(attributes)
188
+ result = adapter.read(key)
189
+ attributes.each do |column, value|
190
+ result[column].should eq(value)
191
+ end
155
192
  end
156
193
  end
157
194
 
158
195
  describe "#set" do
159
- it "sets key to value" do
196
+ it "sets key to attributes" do
160
197
  adapter.set(key, attributes)
161
- adapter.read(key).should eq(attributes)
198
+ result = adapter.read(key)
199
+ attributes.each do |column, value|
200
+ result[column].should eq(value)
201
+ end
162
202
  end
163
203
  end
164
204
 
165
205
  describe "#[]=" do
166
- it "sets key to value" do
206
+ it "sets key to attributes" do
167
207
  adapter[key] = attributes
168
- adapter.read(key).should eq(attributes)
208
+ result = adapter.read(key)
209
+ attributes.each do |column, value|
210
+ result[column].should eq(value)
211
+ end
169
212
  end
170
213
  end
171
214
 
172
215
  describe "#delete" do
173
216
  context "when key available" do
174
- before do
217
+ it "removes key" do
175
218
  adapter.write(key, attributes)
219
+ adapter.key?(key).should be_true
176
220
  adapter.delete(key)
177
- end
178
-
179
- it "removes key" do
180
221
  adapter.key?(key).should be_false
181
222
  end
182
223
  end
183
224
 
184
225
  context "when key not available" do
185
226
  it "does not complain" do
227
+ adapter.key?(key).should be_false
186
228
  adapter.delete(key)
229
+ adapter.key?(key).should be_false
187
230
  end
188
231
  end
189
232
  end
190
233
 
191
234
  describe "#clear" do
192
- before do
193
- adapter[key] = attributes
194
- adapter[key2] = attributes2
235
+ it "removes all available keys" do
236
+ adapter.write(key, attributes)
237
+ adapter.write(key2, attributes2)
238
+ adapter.key?(key).should be_true
239
+ adapter.key?(key2).should be_true
195
240
  adapter.clear
196
- end
197
-
198
- it "removes all stored keys" do
199
241
  adapter.key?(key).should be_false
200
242
  adapter.key?(key2).should be_false
201
243
  end
@@ -1,3 +1,3 @@
1
1
  module Adapter
2
- VERSION = '0.6.1'
2
+ VERSION = '0.6.2'
3
3
  end
data/spec/helper.rb CHANGED
@@ -9,6 +9,6 @@ require 'support/module_helpers'
9
9
 
10
10
  Bundler.require(:default, :test)
11
11
 
12
- Rspec.configure do |c|
13
- c.include(ModuleHelpers)
12
+ RSpec.configure do |config|
13
+ config.include(ModuleHelpers)
14
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-11-07 00:00:00.000000000 Z
14
+ date: 2012-11-08 00:00:00.000000000 Z
15
15
  dependencies: []
16
16
  description:
17
17
  email:
@@ -26,7 +26,6 @@ files:
26
26
  - .travis.yml
27
27
  - Changelog.md
28
28
  - Gemfile
29
- - Gemfile.lock
30
29
  - Guardfile
31
30
  - LICENSE
32
31
  - README.md
@@ -61,7 +60,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
61
60
  version: '0'
62
61
  segments:
63
62
  - 0
64
- hash: -1252811508821145516
63
+ hash: -3288681116228721407
65
64
  required_rubygems_version: !ruby/object:Gem::Requirement
66
65
  none: false
67
66
  requirements:
@@ -70,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
69
  version: '0'
71
70
  segments:
72
71
  - 0
73
- hash: -1252811508821145516
72
+ hash: -3288681116228721407
74
73
  requirements: []
75
74
  rubyforge_project:
76
75
  rubygems_version: 1.8.23
data/Gemfile.lock DELETED
@@ -1,39 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- adapter (0.6.1)
5
-
6
- GEM
7
- remote: http://rubygems.org/
8
- specs:
9
- diff-lcs (1.1.3)
10
- ffi (1.0.11)
11
- guard (1.0.0)
12
- ffi (>= 0.5.0)
13
- thor (~> 0.14.6)
14
- guard-bundler (0.1.3)
15
- bundler (>= 1.0.0)
16
- guard (>= 0.2.2)
17
- guard-rspec (0.6.0)
18
- guard (>= 0.10.0)
19
- rake (0.9.2)
20
- rspec (2.5.0)
21
- rspec-core (~> 2.5.0)
22
- rspec-expectations (~> 2.5.0)
23
- rspec-mocks (~> 2.5.0)
24
- rspec-core (2.5.1)
25
- rspec-expectations (2.5.0)
26
- diff-lcs (~> 1.1.2)
27
- rspec-mocks (2.5.0)
28
- thor (0.14.6)
29
-
30
- PLATFORMS
31
- ruby
32
-
33
- DEPENDENCIES
34
- adapter!
35
- guard
36
- guard-bundler
37
- guard-rspec
38
- rake
39
- rspec