stackster 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ ## v0.4.2:
2
+
3
+ * Fixed the handling of data from the select method
4
+
1
5
  ## v0.4.1:
2
6
 
3
7
  * Added method wait_for_stable to stack class
@@ -28,7 +28,19 @@ module Stackster
28
28
  end
29
29
 
30
30
  def select(query)
31
- @connect.select(query, 'ConsistentRead' => true).body['Items']
31
+ options = { 'ConsistentRead' => true }
32
+ data = {}
33
+ next_token = nil
34
+
35
+ while true
36
+ options.merge! 'NextToken' => next_token
37
+ chunk = @connect.select(query, options).body
38
+ data.merge! chunk['Items']
39
+ next_token = chunk['NextToken']
40
+ break unless next_token
41
+ end
42
+
43
+ data
32
44
  end
33
45
 
34
46
  def delete(domain, key)
@@ -1,3 +1,3 @@
1
1
  module Stackster
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
@@ -6,7 +6,14 @@ describe Stackster do
6
6
  @response_stub = stub 'Excon::Response', :body => {
7
7
  'RequestId' => 'rid',
8
8
  'Domains' => ['domain1', 'domain2'],
9
- 'Items' => { 'item1' => { 'key' => ['value'] } }
9
+ 'Items' => { 'item1' => { 'key' => ['value'] } },
10
+ 'NextToken' => nil
11
+ }
12
+ @multi_response_stub = stub 'Excon::Response', :body => {
13
+ 'RequestId' => 'rid',
14
+ 'Domains' => ['domain1', 'domain2'],
15
+ 'Items' => { 'item1-2' => { 'key' => ['value'] } },
16
+ 'NextToken' => 'Chunk2'
10
17
  }
11
18
 
12
19
  @db_mock = mock 'SimpleDB'
@@ -56,10 +63,17 @@ describe Stackster do
56
63
 
57
64
  describe 'select' do
58
65
  it 'should return query items' do
59
- @db_mock.should_receive(:select).with('item1', { "ConsistentRead" => true } ).and_return(@response_stub)
66
+ @db_mock.should_receive(:select).with('item1', { "ConsistentRead" => true, "NextToken" => nil } ).and_return(@response_stub)
60
67
 
61
68
  @db.select('item1').should == { 'item1' => { 'key' => ['value'] } }
62
69
  end
70
+
71
+ it 'should return multiple chunks of query items' do
72
+ @db_mock.should_receive(:select).with('item1', { "ConsistentRead" => true, "NextToken" => nil } ).and_return(@multi_response_stub)
73
+ @db_mock.should_receive(:select).with('item1', { "ConsistentRead" => true, "NextToken" => 'Chunk2' } ).and_return(@response_stub)
74
+
75
+ @db.select('item1').should == { 'item1' => { 'key' => ['value'] }, 'item1-2' => { 'key' => ['value'] } }
76
+ end
63
77
  end
64
78
 
65
79
  describe 'delete' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stackster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-21 00:00:00.000000000 Z
12
+ date: 2013-02-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70279904793100 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70279904793100
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rspec
27
- requirement: &70279904791720 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 2.11.0
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70279904791720
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.11.0
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: simplecov
38
- requirement: &70279904805940 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: 0.6.4
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70279904805940
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.6.4
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: timecop
49
- requirement: &70279904804520 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
@@ -54,40 +69,60 @@ dependencies:
54
69
  version: 0.5.3
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70279904804520
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.5.3
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: fog
60
- requirement: &70279904802780 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
- - - =
83
+ - - '='
64
84
  - !ruby/object:Gem::Version
65
85
  version: 1.6.0
66
86
  type: :runtime
67
87
  prerelease: false
68
- version_requirements: *70279904802780
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - '='
92
+ - !ruby/object:Gem::Version
93
+ version: 1.6.0
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: trollop
71
- requirement: &70279904801900 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
- - - =
99
+ - - '='
75
100
  - !ruby/object:Gem::Version
76
101
  version: '2.0'
77
102
  type: :runtime
78
103
  prerelease: false
79
- version_requirements: *70279904801900
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - '='
108
+ - !ruby/object:Gem::Version
109
+ version: '2.0'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: xml-simple
82
- requirement: &70279904800940 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
- - - =
115
+ - - '='
86
116
  - !ruby/object:Gem::Version
87
117
  version: 1.1.2
88
118
  type: :runtime
89
119
  prerelease: false
90
- version_requirements: *70279904800940
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - '='
124
+ - !ruby/object:Gem::Version
125
+ version: 1.1.2
91
126
  description: Thats what I do
92
127
  email:
93
128
  - brett@weav.net
@@ -161,7 +196,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
196
  version: '0'
162
197
  segments:
163
198
  - 0
164
- hash: 536232513637349196
199
+ hash: 2937720752334534318
165
200
  required_rubygems_version: !ruby/object:Gem::Requirement
166
201
  none: false
167
202
  requirements:
@@ -170,10 +205,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
205
  version: '0'
171
206
  segments:
172
207
  - 0
173
- hash: 536232513637349196
208
+ hash: 2937720752334534318
174
209
  requirements: []
175
210
  rubyforge_project: stackster
176
- rubygems_version: 1.8.16
211
+ rubygems_version: 1.8.24
177
212
  signing_key:
178
213
  specification_version: 3
179
214
  summary: I make deployments easier