riakrest 0.1.0 → 0.1.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/History.txt +11 -0
- data/README.rdoc +1 -1
- data/Rakefile +8 -4
- data/VERSION +1 -1
- data/examples/auto_update_data.rb +2 -3
- data/examples/auto_update_links.rb +2 -3
- data/examples/basic_client.rb +2 -3
- data/examples/basic_resource.rb +2 -3
- data/examples/example_helper.rb +7 -0
- data/examples/linked_resources.rb +2 -3
- data/lib/riakrest/core/jiak_bucket.rb +2 -2
- data/lib/riakrest/core/jiak_client.rb +108 -45
- data/lib/riakrest/core/jiak_data.rb +10 -11
- data/lib/riakrest/core/jiak_object.rb +2 -1
- data/lib/riakrest/core/jiak_schema.rb +82 -38
- data/lib/riakrest/resource/jiak_resource.rb +84 -73
- data/lib/riakrest.rb +16 -9
- data/spec/core/jiak_bucket_spec.rb +3 -0
- data/spec/core/jiak_client_spec.rb +85 -15
- data/spec/core/jiak_schema_spec.rb +107 -5
- data/spec/resource/jiak_resource_spec.rb +37 -19
- data/spec/spec_helper.rb +3 -0
- metadata +35 -11
- data/examples/bucket_schemas.rb +0 -38
- data/examples/links_only_pov.rb +0 -38
- data/examples/multiple_pov.rb +0 -46
- data/examples/rest_interaction.rb +0 -51
- data/examples/ruby_json_data.rb +0 -19
@@ -10,9 +10,9 @@ end
|
|
10
10
|
|
11
11
|
describe "JiakClient" do
|
12
12
|
before do
|
13
|
-
@base_uri =
|
13
|
+
@base_uri = SERVER_URI
|
14
14
|
@client = JiakClient.new(@base_uri)
|
15
|
-
@params = {:reads => 1, :writes => 2, :durable_writes => 3, :
|
15
|
+
@params = {:reads => 1, :writes => 2, :durable_writes => 3, :deletes => 4}
|
16
16
|
@opts = @params.merge({:proxy => 'proxy_uri'})
|
17
17
|
end
|
18
18
|
|
@@ -20,16 +20,49 @@ describe "JiakClient" do
|
|
20
20
|
@client.should respond_to(:set_schema,:schema,:keys)
|
21
21
|
@client.should respond_to(:proxy,:proxy=)
|
22
22
|
@client.should respond_to(:params,:set_params,:params=)
|
23
|
-
@client.should respond_to(:get,:
|
23
|
+
@client.should respond_to(:store,:get,:delete)
|
24
|
+
@client.should respond_to(:exist?,:walk)
|
24
25
|
@client.should respond_to(:==,:eql?)
|
25
26
|
end
|
26
27
|
|
28
|
+
it "should protect constants" do
|
29
|
+
no_no = lambda {JiakClient::APP_JSON << 'a'}
|
30
|
+
no_no.should raise_error(StandardError,/frozen/)
|
31
|
+
|
32
|
+
no_no = lambda {JiakClient::RETURN_BODY << 'a'}
|
33
|
+
no_no.should raise_error(StandardError,/frozen/)
|
34
|
+
|
35
|
+
no_no = lambda {JiakClient::READS << 'a'}
|
36
|
+
no_no.should raise_error(StandardError,/frozen/)
|
37
|
+
|
38
|
+
no_no = lambda {JiakClient::WRITES << 'a'}
|
39
|
+
no_no.should raise_error(StandardError,/frozen/)
|
40
|
+
|
41
|
+
no_no = lambda {JiakClient::DURABLE_WRITES << 'a'}
|
42
|
+
no_no.should raise_error(StandardError,/frozen/)
|
43
|
+
|
44
|
+
no_no = lambda {JiakClient::DELETES << 'a'}
|
45
|
+
no_no.should raise_error(StandardError,/frozen/)
|
46
|
+
|
47
|
+
no_no = lambda {JiakClient::VALID_PARAMS << 'a'}
|
48
|
+
no_no.should raise_error(StandardError,/frozen/)
|
49
|
+
|
50
|
+
no_no = lambda {JiakClient::VALID_OPTS << 'a'}
|
51
|
+
no_no.should raise_error(StandardError,/frozen/)
|
52
|
+
|
53
|
+
no_no = lambda {JiakClient::KEYS << 'a'}
|
54
|
+
no_no.should raise_error(StandardError,/frozen/)
|
55
|
+
|
56
|
+
no_no = lambda {JiakClient::SCHEMA << 'a'}
|
57
|
+
no_no.should raise_error(StandardError,/frozen/)
|
58
|
+
end
|
59
|
+
|
27
60
|
it "should default to base URI" do
|
28
61
|
@client.server.should match @base_uri
|
29
62
|
end
|
30
63
|
|
31
64
|
it "should allow specified base URI" do
|
32
|
-
base_uri = 'http://
|
65
|
+
base_uri = 'http://host:port/base/'
|
33
66
|
client = JiakClient.new base_uri
|
34
67
|
client.server.should match base_uri
|
35
68
|
end
|
@@ -69,12 +102,12 @@ describe "JiakClient" do
|
|
69
102
|
@client.params = @params
|
70
103
|
@params.each {|k,v| @client.params[k].should == @params[k]}
|
71
104
|
|
72
|
-
@client.set_params(:writes => 1, :
|
105
|
+
@client.set_params(:writes => 1, :deletes => nil)
|
73
106
|
params = @client.params
|
74
107
|
params[:reads].should eql 1
|
75
108
|
params[:writes].should eql 1
|
76
109
|
params[:durable_writes].should eql 3
|
77
|
-
params[:
|
110
|
+
params[:deletes].should eql nil
|
78
111
|
|
79
112
|
bad_opts = lambda {@client.set_params(:junk => 'junk')}
|
80
113
|
bad_opts.should raise_error(JiakClientException,/option/)
|
@@ -87,7 +120,7 @@ end
|
|
87
120
|
|
88
121
|
describe "JiakClient URI handling" do
|
89
122
|
before do
|
90
|
-
@base_uri =
|
123
|
+
@base_uri = SERVER_URI
|
91
124
|
@client = JiakClient.new @base_uri
|
92
125
|
@bucket = JiakBucket.new('uri_bucket',FooBarBaz)
|
93
126
|
@key = 'uri_key'
|
@@ -96,7 +129,7 @@ end
|
|
96
129
|
|
97
130
|
describe "JiakClient processing" do
|
98
131
|
before do
|
99
|
-
@base_uri =
|
132
|
+
@base_uri = SERVER_URI
|
100
133
|
@client = JiakClient.new @base_uri
|
101
134
|
end
|
102
135
|
|
@@ -107,7 +140,24 @@ describe "JiakClient processing" do
|
|
107
140
|
@client.set_schema(@bucket)
|
108
141
|
end
|
109
142
|
|
110
|
-
it "should
|
143
|
+
it "should fetch schema by bucket or bucket name" do
|
144
|
+
@client.schema(@bucket).should eql FooBarBaz.schema
|
145
|
+
@client.schema(@bucket.name).should eql FooBarBaz.schema
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should fetch default schema" do
|
149
|
+
bucket_name = "wide open"
|
150
|
+
bucket = JiakBucket.new(bucket_name,FooBarBaz)
|
151
|
+
@client.schema(bucket).should eql JiakSchema::WIDE_OPEN
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should set and fetch a wide open schema" do
|
155
|
+
@client.schema(@bucket).should_not eql JiakSchema::WIDE_OPEN
|
156
|
+
@client.set_schema(@bucket.name,JiakSchema::WIDE_OPEN)
|
157
|
+
@client.schema(@bucket).should eql JiakSchema::WIDE_OPEN
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should set and fetch a bucket schema" do
|
111
161
|
schema = @client.schema(@bucket)
|
112
162
|
|
113
163
|
['allowed_fields',
|
@@ -129,7 +179,6 @@ describe "JiakClient processing" do
|
|
129
179
|
resp_schema.required_fields.should be_empty
|
130
180
|
resp_schema.read_mask.should include :baz
|
131
181
|
resp_schema.write_mask.should include :baz
|
132
|
-
|
133
182
|
end
|
134
183
|
|
135
184
|
it "should get a list of keys for a bucket" do
|
@@ -159,7 +208,11 @@ describe "JiakClient processing" do
|
|
159
208
|
before do
|
160
209
|
@bucket = JiakBucket.new('bucket_2',FooBarBaz)
|
161
210
|
@client.set_schema(@bucket)
|
162
|
-
@data = FooBarBaz.new(:foo => '
|
211
|
+
@data = FooBarBaz.new(:foo => 'Foo',:bar => 'Bar')
|
212
|
+
end
|
213
|
+
|
214
|
+
after do
|
215
|
+
@client.keys(@bucket).each {|key| @client.delete(@bucket,key)}
|
163
216
|
end
|
164
217
|
|
165
218
|
describe "storage" do
|
@@ -205,10 +258,17 @@ describe "JiakClient processing" do
|
|
205
258
|
end
|
206
259
|
|
207
260
|
describe "fetching" do
|
261
|
+
it "should check for resource existence" do
|
262
|
+
jobj = JiakObject.new(:bucket => @bucket, :data => @data)
|
263
|
+
key = @client.store(jobj)
|
264
|
+
|
265
|
+
@client.exist?(@bucket,key).should be true
|
266
|
+
@client.exist?(@bucket,'nope').should be false
|
267
|
+
end
|
268
|
+
|
208
269
|
it "should get a previously stored JiakObject" do
|
209
|
-
|
210
|
-
|
211
|
-
@client.store(jobj)
|
270
|
+
jobj = JiakObject.new(:bucket => @bucket, :data => @data)
|
271
|
+
key = @client.store(jobj)
|
212
272
|
|
213
273
|
fetched = @client.get(@bucket,key)
|
214
274
|
fetched.should be_a JiakObject
|
@@ -222,6 +282,16 @@ describe "JiakClient processing" do
|
|
222
282
|
fetched.should be_a JiakObject
|
223
283
|
end
|
224
284
|
|
285
|
+
it "should accept write and read parameters" do
|
286
|
+
key = 'fetch_key_wr'
|
287
|
+
jobj = JiakObject.new(:bucket => @bucket, :key => key, :data => @data)
|
288
|
+
jobj = @client.store(jobj,
|
289
|
+
:writes => 3, :reads => 3,
|
290
|
+
:return => :object)
|
291
|
+
|
292
|
+
jobj = @client.get(@bucket, key, :reads => 1)
|
293
|
+
end
|
294
|
+
|
225
295
|
it "should raise JiakResourceNotFound for a non-existent key" do
|
226
296
|
get_nope = lambda {@client.get(@bucket,'nope')}
|
227
297
|
get_nope.should raise_error(JiakResourceNotFound)
|
@@ -275,7 +345,7 @@ end
|
|
275
345
|
|
276
346
|
describe "JiakClient links" do
|
277
347
|
before do
|
278
|
-
@base_uri =
|
348
|
+
@base_uri = SERVER_URI
|
279
349
|
@client = JiakClient.new @base_uri
|
280
350
|
|
281
351
|
@p_bucket = JiakBucket.new('parent',PersonData)
|
@@ -28,6 +28,14 @@ describe "JiakSchema" do
|
|
28
28
|
@jiak_schema.should respond_to(:==,:eql?)
|
29
29
|
end
|
30
30
|
|
31
|
+
it "should protect constants" do
|
32
|
+
no_no = lambda {JiakSchema::WIDE_OPEN.allow :x}
|
33
|
+
no_no.should raise_error(StandardError,/frozen/)
|
34
|
+
|
35
|
+
no_no = lambda {JiakSchema::WILDCARD << 'a'}
|
36
|
+
no_no.should raise_error(StandardError,/frozen/)
|
37
|
+
end
|
38
|
+
|
31
39
|
it "should create using defaults from allowed_fields" do
|
32
40
|
jiak_schema = JiakSchema.new({:allowed_fields => @allowed_fields})
|
33
41
|
jiak_schema.allowed_fields.should eql @allowed_fields
|
@@ -136,6 +144,7 @@ describe "JiakSchema" do
|
|
136
144
|
it "should ignore duplicate fields" do
|
137
145
|
hash = @hash.clone
|
138
146
|
hash[:allowed_fields] << @allowed_fields[0].to_s
|
147
|
+
|
139
148
|
jiak_schema = JiakSchema.new(hash)
|
140
149
|
jiak_schema.should eql @jiak_schema
|
141
150
|
|
@@ -144,15 +153,55 @@ describe "JiakSchema" do
|
|
144
153
|
|
145
154
|
hash[:read_mask] << @read_mask[0]
|
146
155
|
jiak_schema.read_mask = hash[:read_mask]
|
147
|
-
jiak_schema.read_mask.should eql @
|
156
|
+
jiak_schema.read_mask.should eql @jiak_schema.read_mask
|
148
157
|
|
149
158
|
hash[:write_mask] << @write_mask[0]
|
150
159
|
jiak_schema.write_mask = hash[:write_mask]
|
151
|
-
jiak_schema.write_mask.should eql @
|
160
|
+
jiak_schema.write_mask.should eql @jiak_schema.write_mask
|
152
161
|
|
153
162
|
jiak_schema.readwrite = hash[:read_mask]
|
154
|
-
jiak_schema.read_mask.should eql @
|
155
|
-
jiak_schema.write_mask.should eql @
|
163
|
+
jiak_schema.read_mask.should eql @jiak_schema.read_mask
|
164
|
+
jiak_schema.write_mask.should eql @jiak_schema.read_mask
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should be independent of init arg" do
|
168
|
+
@jiak_schema.allowed_fields.should eql @hash[:allowed_fields]
|
169
|
+
@hash[:allowed_fields] << :junk
|
170
|
+
@jiak_schema.allowed_fields.should_not eql @hash[:allowed_fields]
|
171
|
+
|
172
|
+
@jiak_schema.required_fields.should eql @hash[:required_fields]
|
173
|
+
@hash[:required_fields] << :junk
|
174
|
+
@jiak_schema.required_fields.should_not eql @hash[:required_fields]
|
175
|
+
|
176
|
+
@jiak_schema.read_mask.should eql @hash[:read_mask]
|
177
|
+
@hash[:read_mask] << :junk
|
178
|
+
@jiak_schema.read_mask.should_not eql @hash[:read_mask]
|
179
|
+
|
180
|
+
@jiak_schema.write_mask.should eql @hash[:write_mask]
|
181
|
+
@hash[:write_mask] << :junk
|
182
|
+
@jiak_schema.write_mask.should_not eql @hash[:write_mask]
|
183
|
+
|
184
|
+
arr = [:a,:b]
|
185
|
+
jiak_schema = JiakSchema.new(arr)
|
186
|
+
jiak_schema.allowed_fields.should eql arr
|
187
|
+
arr << :c
|
188
|
+
jiak_schema.allowed_fields.should_not eql arr
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should init with wildcards" do
|
192
|
+
jiak_schema = JiakSchema.new(JiakSchema::WILDCARD)
|
193
|
+
jiak_schema.allowed_fields.should eql JiakSchema::WILDCARD
|
194
|
+
jiak_schema.required_fields.should be_empty
|
195
|
+
jiak_schema.read_mask.should eql JiakSchema::WILDCARD
|
196
|
+
jiak_schema.write_mask.should eql JiakSchema::WILDCARD
|
197
|
+
end
|
198
|
+
|
199
|
+
it "should init a wide open schema" do
|
200
|
+
jiak_schema = JiakSchema::WIDE_OPEN
|
201
|
+
jiak_schema.allowed_fields.should eql JiakSchema::WILDCARD
|
202
|
+
jiak_schema.required_fields.should be_empty
|
203
|
+
jiak_schema.read_mask.should eql JiakSchema::WILDCARD
|
204
|
+
jiak_schema.write_mask.should eql JiakSchema::WILDCARD
|
156
205
|
end
|
157
206
|
|
158
207
|
it "should update individual arrays" do
|
@@ -194,6 +243,59 @@ describe "JiakSchema" do
|
|
194
243
|
jiak_schema.write_mask.should eql arr123
|
195
244
|
end
|
196
245
|
|
246
|
+
it "should update wild card arrays" do
|
247
|
+
array = [:f1]
|
248
|
+
jiak_schema = JiakSchema.new(JiakSchema::WILDCARD)
|
249
|
+
jiak_schema.allow :f1
|
250
|
+
jiak_schema.allowed_fields.should eql array
|
251
|
+
jiak_schema.required_fields.should be_empty
|
252
|
+
jiak_schema.read_mask.should eql JiakSchema::WILDCARD
|
253
|
+
jiak_schema.write_mask.should eql JiakSchema::WILDCARD
|
254
|
+
|
255
|
+
array << :f2
|
256
|
+
jiak_schema = JiakSchema.new(JiakSchema::WILDCARD)
|
257
|
+
jiak_schema.readable array
|
258
|
+
jiak_schema.allowed_fields.should eql array
|
259
|
+
jiak_schema.required_fields.should be_empty
|
260
|
+
jiak_schema.read_mask.should eql array
|
261
|
+
jiak_schema.write_mask.should eql JiakSchema::WILDCARD
|
262
|
+
|
263
|
+
array << :f3
|
264
|
+
jiak_schema = JiakSchema.new(JiakSchema::WILDCARD)
|
265
|
+
jiak_schema.writable array
|
266
|
+
jiak_schema.allowed_fields.should eql array
|
267
|
+
jiak_schema.required_fields.should be_empty
|
268
|
+
jiak_schema.read_mask.should eql JiakSchema::WILDCARD
|
269
|
+
jiak_schema.write_mask.should eql array
|
270
|
+
|
271
|
+
array << :f4
|
272
|
+
jiak_schema = JiakSchema.new(JiakSchema::WILDCARD)
|
273
|
+
jiak_schema.readwrite array
|
274
|
+
jiak_schema.allowed_fields.should eql array
|
275
|
+
jiak_schema.required_fields.should be_empty
|
276
|
+
jiak_schema.read_mask.should eql array
|
277
|
+
jiak_schema.write_mask.should eql array
|
278
|
+
end
|
279
|
+
|
280
|
+
it "should set wild card arrays" do
|
281
|
+
@jiak_schema.allowed_fields = JiakSchema::WILDCARD
|
282
|
+
@jiak_schema.allowed_fields.should eql JiakSchema::WILDCARD
|
283
|
+
@jiak_schema.read_mask.should eql @read_mask
|
284
|
+
@jiak_schema.write_mask.should eql @write_mask
|
285
|
+
|
286
|
+
@jiak_schema.read_mask = JiakSchema::WILDCARD
|
287
|
+
@jiak_schema.allowed_fields.should eql JiakSchema::WILDCARD
|
288
|
+
@jiak_schema.read_mask.should eql JiakSchema::WILDCARD
|
289
|
+
@jiak_schema.write_mask.should eql @write_mask
|
290
|
+
|
291
|
+
@jiak_schema.write_mask = JiakSchema::WILDCARD
|
292
|
+
@jiak_schema.allowed_fields.should eql JiakSchema::WILDCARD
|
293
|
+
@jiak_schema.read_mask.should eql JiakSchema::WILDCARD
|
294
|
+
@jiak_schema.write_mask.should eql JiakSchema::WILDCARD
|
295
|
+
|
296
|
+
@jiak_schema.required_fields.should eql @required_fields
|
297
|
+
end
|
298
|
+
|
197
299
|
it "should return added fields when updating individual arrays" do
|
198
300
|
arr12 = [:f1,:f2]
|
199
301
|
arr23 = [:f2,:f3]
|
@@ -262,7 +364,7 @@ describe "JiakSchema" do
|
|
262
364
|
end
|
263
365
|
|
264
366
|
it "should convert to json" do
|
265
|
-
@jiak_schema.to_jiak.should eql
|
367
|
+
@jiak_schema.to_jiak.should eql({:schema => @hash})
|
266
368
|
end
|
267
369
|
|
268
370
|
it "should equal an equal JiakSchema" do
|
@@ -3,29 +3,28 @@ require File.dirname(__FILE__) + '/../spec_helper.rb'
|
|
3
3
|
describe "JiakResource default" do
|
4
4
|
class Rsrc # :nodoc:
|
5
5
|
include JiakResource
|
6
|
-
server
|
6
|
+
server SERVER_URI
|
7
7
|
jattr_accessor :f1, :f2
|
8
8
|
end
|
9
9
|
|
10
10
|
before do
|
11
|
-
@
|
11
|
+
@server_uri = SERVER_URI
|
12
12
|
@group = 'rsrc'
|
13
13
|
@schema = JiakSchema.new [:f1,:f2]
|
14
|
-
Rsrc.pov
|
15
14
|
end
|
16
15
|
|
17
16
|
describe "class creation" do
|
18
17
|
it "should respond to" do
|
19
18
|
Rsrc.should respond_to(:server,:group)
|
20
19
|
Rsrc.should respond_to(:jattr_reader,:jattr,:jattr_writer,:jattr_accessor)
|
21
|
-
Rsrc.should respond_to(:params,:auto_update,:
|
22
|
-
Rsrc.should respond_to(:
|
20
|
+
Rsrc.should respond_to(:params,:auto_update,:keys)
|
21
|
+
Rsrc.should respond_to(:schema,:push_schema,:server_schema?)
|
23
22
|
Rsrc.should respond_to(:post,:put,:get,:delete)
|
24
23
|
Rsrc.should respond_to(:refresh,:update,:exist?)
|
25
24
|
Rsrc.should respond_to(:link,:bi_link,:query,:walk)
|
26
25
|
Rsrc.should respond_to(:auto_post,:auto_update,:auto_manage)
|
27
26
|
Rsrc.should respond_to(:auto_post,:auto_update,:auto_manage?)
|
28
|
-
Rsrc.jiak.should respond_to(:
|
27
|
+
Rsrc.jiak.should respond_to(:client,:uri,:group,:data,:bucket)
|
29
28
|
end
|
30
29
|
|
31
30
|
it "should have specified settings" do
|
@@ -34,8 +33,8 @@ describe "JiakResource default" do
|
|
34
33
|
Rsrc.schema.should eql @schema
|
35
34
|
|
36
35
|
Rsrc.jiak.should be_a Struct
|
37
|
-
Rsrc.jiak.
|
38
|
-
Rsrc.jiak.uri.should eql @
|
36
|
+
Rsrc.jiak.client.should be_a JiakClient
|
37
|
+
Rsrc.jiak.uri.should eql @server_uri
|
39
38
|
Rsrc.jiak.group.should eql @group
|
40
39
|
Rsrc.jiak.data.should include JiakData
|
41
40
|
Rsrc.jiak.bucket.should be_a JiakBucket
|
@@ -51,7 +50,7 @@ describe "JiakResource default" do
|
|
51
50
|
end
|
52
51
|
|
53
52
|
it "should respond to" do
|
54
|
-
@rsrc.should respond_to(:jiak
|
53
|
+
@rsrc.should respond_to(:jiak)
|
55
54
|
@rsrc.should respond_to(:auto_update=,:auto_update?)
|
56
55
|
@rsrc.should respond_to(:post,:put,:delete)
|
57
56
|
@rsrc.should respond_to(:update,:push,:refresh,:pull)
|
@@ -82,14 +81,37 @@ describe "JiakResource default" do
|
|
82
81
|
end
|
83
82
|
end
|
84
83
|
|
84
|
+
describe "JiakResource schema" do
|
85
|
+
class People # :nodoc:
|
86
|
+
include JiakResource
|
87
|
+
server SERVER_URI
|
88
|
+
group 'schema'
|
89
|
+
jattr_accessor :name, :age
|
90
|
+
keygen { name }
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should have data schema" do
|
94
|
+
jiak_schema = JiakSchema.new([:name,:age])
|
95
|
+
People.schema.should eql jiak_schema
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should push/check server schema" do
|
99
|
+
People.server_schema?.should be false
|
100
|
+
People.push_schema
|
101
|
+
People.server_schema?.should be true
|
102
|
+
|
103
|
+
People.push_schema(JiakSchema::WIDE_OPEN)
|
104
|
+
People.server_schema?.should be false
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
85
108
|
describe "JiakResource default class-level auto-post/auto-update" do
|
86
109
|
class People # :nodoc:
|
87
110
|
include JiakResource
|
88
|
-
server
|
111
|
+
server SERVER_URI
|
89
112
|
group 'people'
|
90
113
|
jattr_accessor :name, :age
|
91
114
|
keygen { name }
|
92
|
-
point_of_view
|
93
115
|
end
|
94
116
|
|
95
117
|
before do
|
@@ -135,11 +157,10 @@ end
|
|
135
157
|
describe "JiakResource class auto-post" do
|
136
158
|
class People # :nodoc:
|
137
159
|
include JiakResource
|
138
|
-
server
|
160
|
+
server SERVER_URI
|
139
161
|
group 'people'
|
140
162
|
jattr_accessor :name, :age
|
141
163
|
keygen { name }
|
142
|
-
point_of_view
|
143
164
|
end
|
144
165
|
|
145
166
|
before do
|
@@ -214,11 +235,10 @@ end
|
|
214
235
|
describe "JiakResource class auto-update" do
|
215
236
|
class Dogs # :nodoc:
|
216
237
|
include JiakResource
|
217
|
-
server
|
238
|
+
server SERVER_URI
|
218
239
|
group 'dogs'
|
219
240
|
jattr_accessor :name, :age
|
220
241
|
keygen { name }
|
221
|
-
point_of_view
|
222
242
|
auto_manage
|
223
243
|
end
|
224
244
|
|
@@ -309,11 +329,10 @@ end
|
|
309
329
|
describe "JiakResource simple" do
|
310
330
|
class Dogs # :nodoc:
|
311
331
|
include JiakResource
|
312
|
-
server
|
332
|
+
server SERVER_URI
|
313
333
|
group 'dogs'
|
314
334
|
jattr_accessor :name, :age
|
315
335
|
keygen { name }
|
316
|
-
point_of_view
|
317
336
|
auto_manage
|
318
337
|
end
|
319
338
|
|
@@ -370,10 +389,9 @@ end
|
|
370
389
|
describe "JiakResource complex" do
|
371
390
|
class Parents # :nodoc:
|
372
391
|
include JiakResource
|
373
|
-
server
|
392
|
+
server SERVER_URI
|
374
393
|
jattr_accessor :name
|
375
394
|
keygen { name }
|
376
|
-
point_of_view
|
377
395
|
end
|
378
396
|
|
379
397
|
Children = Parents.dup
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
begin
|
2
2
|
require 'spec'
|
3
|
+
require 'json'
|
3
4
|
rescue LoadError
|
4
5
|
require 'rubygems' unless ENV['NO_RUBYGEMS']
|
5
6
|
gem 'rspec'
|
@@ -10,3 +11,5 @@ $:.unshift(File.dirname(__FILE__) + '/../lib')
|
|
10
11
|
|
11
12
|
require 'riakrest'
|
12
13
|
include RiakRest
|
14
|
+
|
15
|
+
SERVER_URI = 'http://localhost:8002/jiak' unless(defined?(SERVER_URI))
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riakrest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Rogers
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-29 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -22,6 +22,16 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: 1.0.0
|
24
24
|
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: json
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.1.9
|
34
|
+
version:
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: rest-client
|
27
37
|
type: :development
|
@@ -32,6 +42,26 @@ dependencies:
|
|
32
42
|
- !ruby/object:Gem::Version
|
33
43
|
version: 1.0.0
|
34
44
|
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: json
|
47
|
+
type: :development
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.1.9
|
54
|
+
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: jeweler
|
57
|
+
type: :development
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 1.4.0
|
64
|
+
version:
|
35
65
|
- !ruby/object:Gem::Dependency
|
36
66
|
name: rspec
|
37
67
|
type: :development
|
@@ -43,7 +73,7 @@ dependencies:
|
|
43
73
|
version: 1.2.9
|
44
74
|
version:
|
45
75
|
description: " RiakRest provides structured, RESTful interaction with\n the HTTP/JSON interface of a Riak[http://riak.basho.com] document data\n store. RiakRest provides two levels of interaction: Core Client and\n Resource. Core Client works at the Jiak level and exposes Jiak\n internals. JiakResource is an abstraction built on top of the Core Client\n that gives a true RESTful feel.\n"
|
46
|
-
email:
|
76
|
+
email: riak@dingosky.com
|
47
77
|
executables: []
|
48
78
|
|
49
79
|
extensions: []
|
@@ -62,10 +92,8 @@ files:
|
|
62
92
|
- examples/auto_update_links.rb
|
63
93
|
- examples/basic_client.rb
|
64
94
|
- examples/basic_resource.rb
|
95
|
+
- examples/example_helper.rb
|
65
96
|
- examples/linked_resources.rb
|
66
|
-
- examples/links_only_pov.rb
|
67
|
-
- examples/multiple_pov.rb
|
68
|
-
- examples/ruby_json_data.rb
|
69
97
|
- lib/riakrest.rb
|
70
98
|
- lib/riakrest/core/exceptions.rb
|
71
99
|
- lib/riakrest/core/jiak_bucket.rb
|
@@ -131,9 +159,5 @@ test_files:
|
|
131
159
|
- examples/auto_update_links.rb
|
132
160
|
- examples/basic_client.rb
|
133
161
|
- examples/basic_resource.rb
|
134
|
-
- examples/
|
162
|
+
- examples/example_helper.rb
|
135
163
|
- examples/linked_resources.rb
|
136
|
-
- examples/links_only_pov.rb
|
137
|
-
- examples/multiple_pov.rb
|
138
|
-
- examples/rest_interaction.rb
|
139
|
-
- examples/ruby_json_data.rb
|
data/examples/bucket_schemas.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'riakrest'
|
2
|
-
include RiakRest
|
3
|
-
|
4
|
-
DogData = JiakDataFields.create(:name,:age,:breeds)
|
5
|
-
DogData.keygen { name.downcase }
|
6
|
-
|
7
|
-
# client = JiakClient.new("http://localhost:8002/jiak")
|
8
|
-
client = JiakClient.new("http://localhost:8002/jiak",
|
9
|
-
:proxy=>"http://localhost:8888")
|
10
|
-
bucket = JiakBucket.new("dogs", DogData)
|
11
|
-
chili = JiakObject.new(:bucket => bucket,
|
12
|
-
:data => DogData.new(:name => "Chili",
|
13
|
-
:age => 6,
|
14
|
-
:breeds => ["heeler","akita"]))
|
15
|
-
client.set_schema(bucket)
|
16
|
-
client.store(chili)
|
17
|
-
chili = client.get(bucket,'chili')
|
18
|
-
|
19
|
-
DogBreedsData = JiakDataFields.create(:name,:breeds)
|
20
|
-
bucket.data_class = DogBreedsData
|
21
|
-
client.set_schema(bucket)
|
22
|
-
chili = client.get(bucket,'chili')
|
23
|
-
chili.data.breeds = ["heeler","mutt"]
|
24
|
-
|
25
|
-
|
26
|
-
DogAgeData = JiakDataFields.create(:name,:age)
|
27
|
-
diego = JiakObject.new(:bucket => bucket,
|
28
|
-
:data => DogAgeData.new(:name => "Diego",
|
29
|
-
:age => 7))
|
30
|
-
client.store(diego)
|
31
|
-
|
32
|
-
addie = JiakObject.new(:bucket => bucket,
|
33
|
-
:data => DogData.new(:name => "Adelaide",
|
34
|
-
:age => 14,
|
35
|
-
:breeds => ["heeler"]))
|
36
|
-
client.store(addie)
|
37
|
-
|
38
|
-
addie = client.get(bucket,'addie')
|
data/examples/links_only_pov.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'riakrest'
|
2
|
-
include RiakRest
|
3
|
-
|
4
|
-
# class with 10 fields
|
5
|
-
class Fields
|
6
|
-
include JiakResource
|
7
|
-
server 'http://localhost:8002/jiak'
|
8
|
-
jattr_accessor (0...10).map {|n| "f#{n}".to_sym}
|
9
|
-
auto_manage
|
10
|
-
end
|
11
|
-
|
12
|
-
class Links
|
13
|
-
include JiakResource
|
14
|
-
server 'http://localhost:8002/jiak'
|
15
|
-
auto_manage
|
16
|
-
end
|
17
|
-
|
18
|
-
# populate two Fields objects with (meaningless) stuff
|
19
|
-
Fields.pov
|
20
|
-
fields = ["fields1","fields2"]
|
21
|
-
fields1,fields2 =
|
22
|
-
fields.map {|o| Fields.new(Fields.schema.write_mask.inject({}) do |h,f|
|
23
|
-
h[f]="#{o.upcase}-#{f.hash}"
|
24
|
-
h
|
25
|
-
end)}
|
26
|
-
|
27
|
-
Links.pov
|
28
|
-
links1 = Links.get(fields1.jiak.key)
|
29
|
-
links1.link(fields2,'link')
|
30
|
-
|
31
|
-
Fields.pov
|
32
|
-
fields2.f1 = "new f1"
|
33
|
-
|
34
|
-
linked = fields1.query(Fields,'link')[0]
|
35
|
-
puts linked.f1 == fields2.f1 # => true
|
36
|
-
|
37
|
-
fields1.delete
|
38
|
-
fields2.delete
|