riakrest 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,27 @@
1
+ === 0.0.3 2009-11-03
2
+
3
+ * Mods:
4
+ - Switched to jeweler for managing gem
5
+ - Allow passing an array for specifying schema fields/masks
6
+ - Added convenience accessors to rsrc.jiak
7
+ - Allow setting proxy on core client
8
+
9
+ Clean-up:
10
+ - More examples futzing.
11
+
1
12
  === 0.0.2 2009-10-30
2
13
 
14
+ * Mods:
15
+ - Fixed corner case for auto_post false / auto_update true.
16
+ - Explicitly reserve jiak field in user data classes.
17
+ - Changed walk to query. Kept walk as an alias.
18
+
3
19
  * Clean-up:
20
+ - DRY'd some code
21
+ - Examples
22
+
4
23
 
5
24
  === 0.0.1 2009-10-20
6
25
 
7
26
  * Initial release:
27
+ - To github, anyway. git log shows the prior activity.
data/README.rdoc CHANGED
@@ -53,7 +53,7 @@ sudo gem install riakrest
53
53
  end
54
54
 
55
55
  remy = Person.new(:name => 'remy',:age => 10) # (auto-post)
56
- puts remy.name # => "remy" (auto-update)
56
+ puts remy.name # => "remy"
57
57
 
58
58
  puts Person.get('remy').name # => "remy" (from Jiak server)
59
59
  puts Person.get('remy').age # => 10 (from Jiak server)
@@ -62,9 +62,9 @@ sudo gem install riakrest
62
62
  puts Person.get('remy').age # => 11 (from Jiak server)
63
63
 
64
64
  callie = Person.new(:name => 'Callie', :age => 13)
65
- remy.link(callie,'sister')
65
+ remy.link(callie,'sister') # link from remy to callie
66
66
 
67
- sisters = remy.query(Person,'sister')
67
+ sisters = remy.query(Person,'sister') # use link to get 'sister'
68
68
  puts sisters[0].eql?(callie) # => true
69
69
 
70
70
  remy.delete
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -1,4 +1,4 @@
1
- require 'lib/riakrest'
1
+ require 'riakrest'
2
2
  include RiakRest
3
3
 
4
4
  PersonData = JiakDataHash.create(:name,:age)
@@ -1,4 +1,4 @@
1
- require 'lib/riakrest'
1
+ require 'riakrest'
2
2
  include RiakRest
3
3
 
4
4
  PersonData = JiakDataHash.create(:name,:age)
@@ -1,4 +1,4 @@
1
- require 'lib/riakrest'
1
+ require 'riakrest'
2
2
  include RiakRest
3
3
 
4
4
  Person = JiakDataHash.create(:name,:age)
@@ -1,4 +1,4 @@
1
- require 'lib/riakrest'
1
+ require 'riakrest'
2
2
  include RiakRest
3
3
 
4
4
  PersonData = JiakDataHash.create(:name,:age)
@@ -1,4 +1,4 @@
1
- require 'lib/riakrest'
1
+ require 'riakrest'
2
2
  include RiakRest
3
3
 
4
4
  PersonData = JiakDataHash.create(:name)
@@ -10,8 +10,6 @@ class Parent
10
10
  server 'http://localhost:8002/jiak'
11
11
  group 'parents'
12
12
  data_class PersonData
13
- auto_post true
14
- auto_update true
15
13
  end
16
14
  Child = Parent.copy(:group => 'children')
17
15
 
@@ -32,10 +30,6 @@ child_parents = parent_children.inject({}) do |build, (p,cs)|
32
30
  end
33
31
 
34
32
  # store data and relationships
35
- Parent.auto_post false
36
- Parent.auto_update false
37
- Child.auto_post false
38
- Child.auto_update false
39
33
  parent_children.each do |pname,cnames|
40
34
  p = Parent.new(:name => pname).post
41
35
  cnames.each do |cname|
@@ -50,10 +44,6 @@ parent_children.each do |pname,cnames|
50
44
  end
51
45
  p.update
52
46
  end
53
- Parent.auto_post true
54
- Parent.auto_update true
55
- Child.auto_post true
56
- Child.auto_update true
57
47
 
58
48
  # retrieve parents
59
49
  parents = parent_children.keys.map {|p| Parent.get(p)}
@@ -84,6 +74,10 @@ c3sp = c3.query(Parent,'parent',Child,'child',Parent,'parent')
84
74
  c3p.each {|p| c3sp.delete_if{|sp| p.eql?(sp)}}
85
75
  puts c3sp[0].name # => "p1"
86
76
 
77
+ # turn on auto-update at class level
78
+ Parent.auto_update true
79
+ Child.auto_update true
80
+
87
81
  # add sibling links
88
82
  children.each do |c|
89
83
  siblings = c.query(Parent,'parent',Child,'child').delete_if{|s| s.eql?(c)}
@@ -114,5 +108,6 @@ op = parents.inject([]) do |build,parent|
114
108
  end
115
109
  puts op[0].name # => 'p1'
116
110
 
111
+ # clean-up by deleting everybody
117
112
  parents.each {|p| p.delete}
118
113
  children.each {|c| c.delete}
@@ -1,4 +1,4 @@
1
- require 'lib/riakrest'
1
+ require 'riakrest'
2
2
  include RiakRest
3
3
 
4
4
  DogData = JiakDataHash.create(:name,:weight,:breed)
@@ -41,3 +41,4 @@ puts addie.name # => "adelaide"
41
41
  puts addie.breed # => "Heeler"
42
42
  puts addie.weight # => 47
43
43
 
44
+ addie.delete
@@ -1,4 +1,4 @@
1
- require 'lib/riakrest'
1
+ require 'riakrest'
2
2
  include RiakRest
3
3
 
4
4
  # CxINC Example doesn't do anything useful yet
@@ -19,22 +19,50 @@ module RiakRest
19
19
  # :startdoc:
20
20
 
21
21
  # :call-seq:
22
- # JiakClient.new(uri) -> uri
22
+ # JiakClient.new(uri,opts={}) -> uri
23
23
  #
24
24
  # Create a new client for Riak RESTful (Jiak) interaction with the server at
25
- # the specified URI.
25
+ # the specified URI. Go through a proxy if proxy option specified.
26
26
  #
27
- # Raise JiakClientException if the server URI is not a string.
27
+ # Valid options:
28
+ # <code>:proxy</code> Proxy server URI
28
29
  #
29
- def initialize(uri='http://127.0.0.1:8002/jiak/')
30
+ # Raise JiakClientException if server or proxy (if exists) URI are not strings.
31
+ #
32
+ def initialize(uri='http://127.0.0.1:8002/jiak/', opts={})
33
+ server(uri)
34
+ proxy(opts[:proxy]) if(opts[:proxy])
35
+ end
36
+
37
+ # :call-seq:
38
+ # server(uri) -> string
39
+ #
40
+ # Set the Jiak server URI for the client.
41
+ #
42
+ # Raise JiakClientException if server URI is not string.
43
+ def server(uri)
30
44
  unless uri.is_a?(String)
31
- raise JiakClientException, "Jiak server URI shoud be a String."
45
+ raise JiakClientException, "Jiak server URI should be a string."
32
46
  end
33
47
  @uri = uri
34
48
  @uri += '/' unless @uri.end_with?('/')
35
49
  @uri
36
50
  end
37
51
 
52
+ # :call-seq:
53
+ # proxy(uri) -> string
54
+ #
55
+ # Set Jiak interaction to go through a proxy.
56
+ #
57
+ # Raise JiakClientException if proxy URI is not string.
58
+ def proxy(uri)
59
+ unless uri.is_a?(String)
60
+ raise JiakClientException, "Proxy URI should be a string."
61
+ end
62
+ @proxy = uri
63
+ RestClient.proxy = uri
64
+ end
65
+
38
66
  # :call-seq:
39
67
  # set_schema(bucket) -> nil
40
68
  #
@@ -178,11 +206,6 @@ module RiakRest
178
206
  begin
179
207
  uri = jiak_uri(bucket,key,req_params)
180
208
  resp = RestClient.get(uri, :accept => APP_JSON)
181
-
182
- # puts
183
- # puts "---CxDEBUG---"
184
- # puts " #{resp}"
185
-
186
209
  JiakObject.from_jiak(JSON.parse(resp),bucket.data_class)
187
210
  rescue RestClient::ResourceNotFound => err
188
211
  raise JiakResourceNotFound, "failed get: #{err.message}"
@@ -25,12 +25,16 @@ module RiakRest
25
25
  module ClassMethods
26
26
 
27
27
  # :call-seq:
28
- # JiakServer.server(uri)
28
+ # JiakServer.server(uri,opts={})
29
29
  #
30
- # Set the URI for Jiak server interaction.
31
- def server(uri)
30
+ # Set the URI for Jiak server interaction. Go through a proxy if proxy
31
+ # option specified.
32
+ #
33
+ # Valid options:
34
+ # <code>:proxy</code> Proxy server URI.
35
+ def server(uri,opts={})
32
36
  jiak.uri = uri
33
- jiak.server = JiakClient.new(uri)
37
+ jiak.server = JiakClient.new(uri,opts)
34
38
  uri
35
39
  end
36
40
 
data/lib/riakrest.rb CHANGED
@@ -1,25 +1,25 @@
1
1
  # See README.rdoc for the RiakRest license.
2
-
3
2
  begin
4
3
  require 'json'
5
4
  rescue LoadError
6
5
  raise "RiakRest requires json for REST JSON messaging."
7
6
  end
7
+
8
8
  begin
9
9
  require 'restclient'
10
10
  rescue LoadError
11
11
  raise <<EOM
12
12
  RiakRest requires the restclient gem for making REST calls.
13
13
  gem install rest-client
14
-
15
14
  EOM
16
15
  end
17
16
 
18
17
  require 'uri'
19
18
 
20
- $:.unshift(File.dirname(__FILE__)) unless
21
- $:.include?(File.dirname(__FILE__)) ||
22
- $:.include?(File.expand_path(File.dirname(__FILE__)))
19
+ dirname = File.dirname(__FILE__)
20
+ $:.unshift(dirname) unless
21
+ $:.include?(dirname) ||
22
+ $:.include?(File.expand_path(dirname))
23
23
 
24
24
  # RiakRest provides structured, RESTful interaction with a Riak document
25
25
  # store. In Riak parlance, this JSON data exchange is called Jiak. RiakRest
@@ -134,10 +134,10 @@ $:.unshift(File.dirname(__FILE__)) unless
134
134
  # </code>
135
135
  # Ah, that feels better. Go forth and Riak!
136
136
  module RiakRest
137
+ version_file = File.join(File.dirname(__FILE__),"..","VERSION")
138
+ VERSION = IO.read(version_file).chomp
137
139
  end
138
140
 
139
- require 'riakrest/version'
140
-
141
141
  require 'riakrest/core/exceptions'
142
142
  require 'riakrest/core/jiak_bucket'
143
143
  require 'riakrest/core/jiak_client'
@@ -148,7 +148,6 @@ require 'riakrest/core/jiak_schema'
148
148
  require 'riakrest/core/query_link'
149
149
 
150
150
  require 'riakrest/data/jiak_data_hash'
151
-
152
151
  require 'riakrest/resource/jiak_resource'
153
152
 
154
153
  # Extend Array with convenience methods for comparing array contents.
@@ -8,6 +8,7 @@ describe "JiakResource default" do
8
8
  group 'group'
9
9
  data_class F1F2
10
10
  end
11
+ Rsrc.pov
11
12
 
12
13
  before do
13
14
  @server = 'http://localhost:8002/jiak/'
@@ -114,6 +115,7 @@ describe "JiakResource default class-level auto-post/auto-update" do
114
115
  group 'people'
115
116
  data_class PersonData
116
117
  end
118
+ Person.pov
117
119
 
118
120
  before do
119
121
  @name = 'p default'
@@ -164,6 +166,7 @@ describe "JiakResource class auto-post" do
164
166
  group 'people'
165
167
  data_class PersonData
166
168
  end
169
+ Person.pov
167
170
 
168
171
  before do
169
172
  @name = 'p auto-post'
@@ -245,6 +248,7 @@ describe "JiakResource class auto-update" do
245
248
  auto_post true
246
249
  auto_update true
247
250
  end
251
+ Dog.pov
248
252
 
249
253
  before do
250
254
  @pname = 'p auto-update'
@@ -341,6 +345,7 @@ describe "JiakResource simple" do
341
345
  auto_post true
342
346
  auto_update true
343
347
  end
348
+ Dog.pov
344
349
 
345
350
  before do
346
351
  @pname = 'p'
@@ -403,6 +408,8 @@ describe "JiakResource complex" do
403
408
  group 'parents'
404
409
  data_class PersonData
405
410
  end
411
+ Parent.pov
412
+
406
413
  Child = Parent.copy(:group => 'children')
407
414
 
408
415
  it "should do multi-step relationships" do
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.0.2
4
+ version: 0.0.3
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-10-31 00:00:00 -07:00
12
+ date: 2009-11-03 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -62,10 +62,10 @@ files:
62
62
  - examples/auto_update_links.rb
63
63
  - examples/basic_client.rb
64
64
  - examples/basic_resource.rb
65
- - examples/json_data_resource.rb
66
- - examples/linked_resource.rb
67
- - examples/links_only.rb
68
- - examples/multiple_resources.rb
65
+ - examples/linked_resources.rb
66
+ - examples/links_only_pov.rb
67
+ - examples/multiple_pov.rb
68
+ - examples/ruby_json_data.rb
69
69
  - lib/riakrest.rb
70
70
  - lib/riakrest/core/exceptions.rb
71
71
  - lib/riakrest/core/jiak_bucket.rb
@@ -77,7 +77,6 @@ files:
77
77
  - lib/riakrest/core/query_link.rb
78
78
  - lib/riakrest/data/jiak_data_hash.rb
79
79
  - lib/riakrest/resource/jiak_resource.rb
80
- - lib/riakrest/version.rb
81
80
  - spec/core/exceptions_spec.rb
82
81
  - spec/core/jiak_bucket_spec.rb
83
82
  - spec/core/jiak_client_spec.rb
@@ -134,7 +133,7 @@ test_files:
134
133
  - examples/auto_update_links.rb
135
134
  - examples/basic_client.rb
136
135
  - examples/basic_resource.rb
137
- - examples/json_data_resource.rb
138
- - examples/linked_resource.rb
139
- - examples/links_only.rb
140
- - examples/multiple_resources.rb
136
+ - examples/linked_resources.rb
137
+ - examples/links_only_pov.rb
138
+ - examples/multiple_pov.rb
139
+ - examples/ruby_json_data.rb
@@ -1,7 +0,0 @@
1
- module RiakRest
2
- VERSION = '0.0.2'
3
- VERSION_ARRAY = VERSION.split(/\./).map { |x| x.to_i } # :nodoc:
4
- VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
5
- VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
6
- VERSION_BUILD = VERSION_ARRAY[2] # :nodoc:
7
- end
File without changes