couchobject 0.5.0 → 0.6.0

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.
Files changed (63) hide show
  1. data/History.txt +10 -0
  2. data/Manifest.txt +30 -6
  3. data/README.txt +580 -42
  4. data/TODO +2 -2
  5. data/config/hoe.rb +1 -1
  6. data/lib/couch_object.rb +7 -2
  7. data/lib/couch_object/database.rb +19 -34
  8. data/lib/couch_object/document.rb +13 -6
  9. data/lib/couch_object/error_classes.rb +110 -0
  10. data/lib/couch_object/persistable.rb +954 -36
  11. data/lib/couch_object/persistable/has_many_relations_array.rb +91 -0
  12. data/lib/couch_object/persistable/meta_classes.rb +568 -0
  13. data/lib/couch_object/persistable/overloaded_methods.rb +209 -0
  14. data/lib/couch_object/server.rb +1 -1
  15. data/lib/couch_object/utils.rb +44 -0
  16. data/lib/couch_object/version.rb +1 -1
  17. data/lib/couch_object/view.rb +129 -6
  18. data/script/console +0 -0
  19. data/script/destroy +0 -0
  20. data/script/generate +0 -0
  21. data/script/txt2html +0 -0
  22. data/spec/database_spec.rb +23 -31
  23. data/spec/database_spec.rb.orig +173 -0
  24. data/spec/document_spec.rb +21 -3
  25. data/spec/integration/database_integration_spec.rb +46 -15
  26. data/spec/integration/integration_helper.rb +3 -3
  27. data/spec/persistable/callback.rb +44 -0
  28. data/spec/persistable/callback_spec.rb +44 -0
  29. data/spec/persistable/cloning.rb +77 -0
  30. data/spec/persistable/cloning_spec.rb +77 -0
  31. data/spec/persistable/comparing_objects.rb +350 -0
  32. data/spec/persistable/comparing_objects_spec.rb +350 -0
  33. data/spec/persistable/deleting.rb +113 -0
  34. data/spec/persistable/deleting_spec.rb +113 -0
  35. data/spec/persistable/error_messages.rb +32 -0
  36. data/spec/persistable/error_messages_spec.rb +32 -0
  37. data/spec/persistable/loading.rb +339 -0
  38. data/spec/persistable/loading_spec.rb +339 -0
  39. data/spec/persistable/new_methods.rb +70 -0
  40. data/spec/persistable/new_methods_spec.rb +70 -0
  41. data/spec/persistable/persistable_helper.rb +194 -0
  42. data/spec/persistable/relations.rb +470 -0
  43. data/spec/persistable/relations_spec.rb +470 -0
  44. data/spec/persistable/saving.rb +137 -0
  45. data/spec/persistable/saving_spec.rb +137 -0
  46. data/spec/persistable/setting_storage_location.rb +65 -0
  47. data/spec/persistable/setting_storage_location_spec.rb +65 -0
  48. data/spec/persistable/timestamps.rb +76 -0
  49. data/spec/persistable/timestamps_spec.rb +76 -0
  50. data/spec/persistable/unsaved_changes.rb +211 -0
  51. data/spec/persistable/unsaved_changes_spec.rb +211 -0
  52. data/spec/server_spec.rb +5 -5
  53. data/spec/utils_spec.rb +60 -0
  54. data/spec/view_spec.rb +40 -7
  55. data/website/index.html +22 -7
  56. data/website/index.txt +13 -5
  57. metadata +93 -61
  58. data/bin/couch_ruby_view_requestor +0 -81
  59. data/lib/couch_object/model.rb +0 -5
  60. data/lib/couch_object/proc_condition.rb +0 -14
  61. data/spec/model_spec.rb +0 -5
  62. data/spec/persistable_spec.rb +0 -91
  63. data/spec/proc_condition_spec.rb +0 -26
@@ -3,19 +3,19 @@ require File.dirname(__FILE__) + '/spec_helper.rb'
3
3
  describe CouchObject::Server do
4
4
 
5
5
  it "should initialize with a URI" do
6
- server = CouchObject::Server.new("http://localhost:8888")
6
+ server = CouchObject::Server.new("http://localhost:5984")
7
7
  server.host.should == "localhost"
8
- server.port.should == 8888
8
+ server.port.should == 5984
9
9
  end
10
10
 
11
11
  it "should have a connection active when its initialized" do
12
- server = CouchObject::Server.new("http://localhost:8888")
12
+ server = CouchObject::Server.new("http://localhost:5984")
13
13
  server.connection.should_not be(nil)
14
14
  server.connection.class.should == Net::HTTP
15
15
  end
16
16
 
17
17
  it "should dispatch requests" do
18
- server = CouchObject::Server.new("http://localhost:8888")
18
+ server = CouchObject::Server.new("http://localhost:5984")
19
19
  request = mock(Net::HTTP::Get)
20
20
  server.connection.should_receive(:request).with(request).and_return("response")
21
21
  server.request(request)
@@ -24,7 +24,7 @@ end
24
24
 
25
25
  describe CouchObject::Server, "Request methods" do
26
26
  before(:each) do
27
- @server = CouchObject::Server.new("http://localhost:8888")
27
+ @server = CouchObject::Server.new("http://localhost:5984")
28
28
  @mock_request = mock("Net::HTTP::{requestmethod}")
29
29
  end
30
30
 
@@ -15,4 +15,64 @@ describe CouchObject::Utils do
15
15
  CouchObject::Utils.join_url("/foo/", "/bar").should == "foo/bar"
16
16
  CouchObject::Utils.join_url("/foo/", "/bar/").should == "foo/bar"
17
17
  end
18
+
19
+ it "should be able to add %22 to the beginning and end of a string" do
20
+ CouchObject::Utils.encode_querystring_parameter("hei").
21
+ should == "%22hei%22"
22
+ end
23
+
24
+ it "should be able to encode values correctly" do
25
+ CouchObject::Utils.encode_querystring_parameter(123).
26
+ should == "123"
27
+
28
+ CouchObject::Utils.encode_querystring_parameter("hallo").
29
+ should == "%22hallo%22"
30
+
31
+ CouchObject::Utils.encode_querystring_parameter(true).
32
+ should == "true"
33
+
34
+ CouchObject::Utils.encode_querystring_parameter(false).
35
+ should == "false"
36
+
37
+ CouchObject::Utils.encode_querystring_parameter(123123123123123123123).
38
+ should == "123123123123123123123"
39
+
40
+ CouchObject::Utils.encode_querystring_parameter([12123,"ASD", \
41
+ true,false,123123123123123123123123]).
42
+ should == "[12123,%22ASD%22,true,false,123123123123123123123123]"
43
+
44
+ CouchObject::Utils.encode_querystring_parameter("http://hei.com").
45
+ should == JSON.unparse("%22http://hei.com%22")[1..-2]
46
+
47
+ end
48
+
49
+ # it "should convert strings in arrays and hashes to UTF-8" do
50
+ #
51
+ # a_encoded = "Math: ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i),"
52
+ # a_decoded = "Math: ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i),"
53
+ # b_encoded = "Geek: STARGΛ̊TE SG-1"
54
+ # b_decoded = "Geek: STARG캛첊TE SG-1" # This is what we want though... "Geek: STARGΛ̊TE SG-1"
55
+ # c_encoded = "Braille: ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌"
56
+ # c_decoded = "Braille: ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌"
57
+ # d_encoded = "На берегу пустынных волн"
58
+ # d_decoded = "На берегу пустынных волн"
59
+ # e_encoded = "Russian: На берегу пустынных волн"
60
+ # e_decoded = "Russian: На берегу пустынных волн"
61
+ #
62
+ # array_before = [a_encoded,[b_encoded,[c_encoded,[d_encoded,[e_encoded]]]]]
63
+ # array_after = [a_decoded,[b_decoded,[c_decoded,[d_decoded,[e_decoded]]]]]
64
+ #
65
+ # CouchObject::Utils::decode_strings(array_before).should == array_after
66
+ #
67
+ # hash_before = {:key => a_encoded, :sub => {:other_key => b_encoded, :more_keys => c_encoded}, :ha => d_encoded, :other_sub => {:ja => e_encoded}}
68
+ # hash_after = {:key => a_decoded, :sub => {:other_key => b_decoded, :more_keys => c_decoded}, :ha => d_decoded, :other_sub => {:ja => e_decoded}}
69
+ #
70
+ # CouchObject::Utils::decode_strings(hash_before).should == hash_after
71
+ #
72
+ # mix_before = [a_encoded, {:key => b_encoded, :array => [c_encoded, 123, true]}]
73
+ # mix_after = [a_decoded, {:key => b_decoded, :array => [c_decoded, 123, true]}]
74
+ #
75
+ # CouchObject::Utils::decode_strings(mix_before).should == mix_after
76
+ #
77
+ # end
18
78
  end
@@ -4,33 +4,66 @@ describe CouchObject::View do
4
4
 
5
5
  before(:each) do
6
6
  @server = mock("CouchObject::Server mock")
7
- @db = CouchObject::Database.open("http://localhost:8888/foo")
7
+ @db = CouchObject::Database.open("http://localhost:5984/foo")
8
8
  @db.server = @server
9
9
  @js = "function(doc){ return doc }"
10
10
  @response = mock("Net::HTTP::Response")
11
11
  @response.stub!(:code).and_return(200)
12
- @response.stub!(:body).and_return(%Q'{"view":"_foo_view:#{@js}","total_rows":0,"rows":[]}')
12
+ @response.stub!(:body).
13
+ and_return(%Q'{"view":"_foo_view:#{@js}","total_rows":0,"rows":[]}')
14
+ @other_response = mock("Net::HTTP::Response")
15
+ @other_response.stub!(:body).
16
+ and_return(%Q'{"total_rows":3,"offset":0,"rows":[{"id":"foo_1","key":"foo","value":"bar_1"},{"id":"foo_2","key":"foo","value":"bar_2"},{"id":"foo_3","key":"foo","value":"bar_3"}]}')
13
17
  end
14
18
 
15
19
  it "should create a new views" do
16
- @db.should_receive(:post).with("/foo/_view_myview", @js).and_return(@response)
20
+ @db.should_receive(:put).
21
+ with("_design%2Fmyview", @js).and_return(@response)
22
+
17
23
  CouchObject::View.create(@db, "myview", @js)
18
24
  end
19
25
 
20
26
  it "should initialzie with db and name and have a view name" do
21
27
  view = CouchObject::View.new(@db, "myview")
22
- view.name.should == "_view_myview"
28
+ view.name.should == "_view/myview"
23
29
  view.db.should == @db
24
30
  end
25
31
 
26
32
  it "should delete a view" do
27
33
  view = CouchObject::View.new(@db, "myview")
28
- @db.should_receive(:delete).with("/foo/_view_myview").and_return(true)
34
+ @db.should_receive(:delete).with("/foo/_view/myview").and_return(true)
29
35
  view.delete
30
36
  end
31
37
 
32
- # it "should query the database with itself"
38
+ it "should query the database with itself" do
39
+ @db.should_receive(:get).
40
+ with("_view/myview").and_return(@other_response)
41
+
42
+ view = CouchObject::View.new(@db,"myview")
43
+ return_value = view.query
44
+ return_value.should be_a_kind_of(Array)
45
+ return_value.size.should == 3
46
+ return_value[0].should == "bar_1"
47
+ return_value[1].should == "bar_2"
48
+ return_value[2].should == "bar_3"
49
+ end
50
+
51
+ it "should be possible to query the database by supplying only an URI string on initialization" do
52
+ view = CouchObject::View.new("http://localhost:5984/foo","myview")
53
+ db = view.db
54
+ db.should_receive(:get).
55
+ with("_view/myview").and_return(@other_response)
56
+
57
+ return_value = view.query
58
+ return_value.should be_a_kind_of(Array)
59
+ return_value.size.should == 3
60
+ return_value[0].should == "bar_1"
61
+ return_value[1].should == "bar_2"
62
+ return_value[2].should == "bar_3"
63
+ end
64
+
65
+
33
66
  # it "should have a ::query singleton for temp view queries"
34
67
  # it "should iterate over the results"
35
- #
68
+
36
69
  end
@@ -33,7 +33,7 @@
33
33
  <h1>CouchObject</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/couch_object"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/couch_object" class="numbers">0.5.0</a>
36
+ <a href="http://rubyforge.org/projects/couch_object" class="numbers">0.6.0</a>
37
37
  </div>
38
38
  <h1>&#x2192; &#8216;couch_object&#8217;</h1>
39
39
 
@@ -41,7 +41,7 @@
41
41
  <h2>What</h2>
42
42
 
43
43
 
44
- <p>CouchObject is a set of classes to help you talk to <a href="http://couchdbwiki.com/">CouchDb</a> with and in Ruby.</p>
44
+ <p>CouchObject is a set of classes to help you talk to <a href="http://incubator.apache.org/couchdb/">CouchDB</a> with and in Ruby.</p>
45
45
 
46
46
 
47
47
  <h2>Installing</h2>
@@ -59,30 +59,45 @@
59
59
  <p>See the <a href="http://couchobject.rubyforge.org/rdoc/">RDoc</a></p>
60
60
 
61
61
 
62
- <h2>How to submit patches</h2>
62
+ <h2>Getting the source and how to submit patches</h2>
63
+
64
+
65
+ <h3>Getting the source</h3>
63
66
 
64
67
 
65
68
  <pre>
66
- $ git clone git://repo.or.cz/couchobject.git
69
+ $ git clone git://gitorious.org/couchobject/mainline.git
67
70
  </pre>
68
71
 
72
+ <h3>Contributing</h3>
73
+
74
+
75
+ <p>Create a public clone on http://gitorious.org/projects/couchobject and submit a merge request via the web interface.</p>
76
+
77
+
69
78
  <h2>License</h2>
70
79
 
71
80
 
72
81
  <p>This code is free to use under the terms of the <span class="caps">MIT</span> license.</p>
73
82
 
74
83
 
75
- <h2>Contact</h2>
84
+ <h2>Authors &#38; Contact</h2>
76
85
 
77
86
 
78
87
  <ul>
79
88
  <li>Author: Johan Sørensen</li>
80
89
  <li>Contact: johan (at) johansorensen <span class="caps">DOT</span> com</li>
81
90
  <li>Home: <a href="http://rubyforge.org/projects/couchobject/">Rubyforge</a> | <a href="http://couchobject.rubyforge.org">Rubyforge hme</a></li>
82
- <li>Source (Git): <a href="http://repo.or.cz/w/couchobject.git">http://repo.or.cz/w/couchobject.git</a></li>
91
+ <li>Source (Git): <a href="http://gitorious.org/projects/couchobject">http://gitorious.org/projects/couchobject</a></li>
92
+ </ul>
93
+
94
+
95
+ <ul>
96
+ <li>Author: Sebastian Probst Eide</li>
97
+ <li>Contact: sebastian.probst.eide (at) gmail <span class="caps">DOT</span> com</li>
83
98
  </ul>
84
99
  <p class="coda">
85
- <a href="">TODO</a>, 15th September 2007<br>
100
+ <a href="">TODO</a>, 12th May 2008<br>
86
101
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
87
102
  </p>
88
103
  </div>
@@ -5,7 +5,7 @@ h1. &#x2192; 'couch_object'
5
5
 
6
6
  h2. What
7
7
 
8
- CouchObject is a set of classes to help you talk to "CouchDb":http://couchdbwiki.com/ with and in Ruby.
8
+ CouchObject is a set of classes to help you talk to "CouchDB":http://incubator.apache.org/couchdb/ with and in Ruby.
9
9
 
10
10
  h2. Installing
11
11
 
@@ -18,20 +18,28 @@ h2. Demonstration of usage
18
18
 
19
19
  See the "RDoc":http://couchobject.rubyforge.org/rdoc/
20
20
 
21
- h2. How to submit patches
21
+ h2. Getting the source and how to submit patches
22
+
23
+ h3. Getting the source
22
24
 
23
25
  <pre>
24
- $ git clone git://repo.or.cz/couchobject.git
26
+ $ git clone git://gitorious.org/couchobject/mainline.git
25
27
  </pre>
26
28
 
29
+ h3. Contributing
30
+
31
+ Create a public clone on http://gitorious.org/projects/couchobject and submit a merge request via the web interface.
32
+
27
33
  h2. License
28
34
 
29
35
  This code is free to use under the terms of the MIT license.
30
36
 
31
- h2. Contact
37
+ h2. Authors & Contact
32
38
 
33
39
  * Author: Johan Sørensen
34
40
  * Contact: johan (at) johansorensen DOT com
35
41
  * Home: "Rubyforge":http://rubyforge.org/projects/couchobject/ | "Rubyforge hme":http://couchobject.rubyforge.org
36
- * Source (Git): "http://repo.or.cz/w/couchobject.git":http://repo.or.cz/w/couchobject.git
42
+ * Source (Git): "http://gitorious.org/projects/couchobject":http://gitorious.org/projects/couchobject
37
43
 
44
+ * Author: Sebastian Probst Eide
45
+ * Contact: sebastian.probst.eide (at) gmail DOT com
metadata CHANGED
@@ -1,33 +1,48 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
3
- specification_version: 1
4
2
  name: couchobject
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.5.0
7
- date: 2007-09-15 00:00:00 +02:00
8
- summary: CouchObject is a library that maps ruby objects to CouchDb documents
9
- require_paths:
10
- - lib
11
- email: johan@johansorensen.com
12
- homepage: http://couchobject.rubyforge.org
13
- rubyforge_project: couchobject
14
- description: CouchObject is a library that maps ruby objects to CouchDb documents
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.6.0
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - "Johan S\xC3\xB8rensen"
8
+ - Sebastian Probst Eide
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2008-05-13 00:00:00 +02:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: json
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.1.1
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: ruby2ruby
27
+ version_requirement:
28
+ version_requirements: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.1.7
33
+ version:
34
+ description: CouchObject is a library that maps ruby objects to CouchDb documents
35
+ email: johan@johansorensen.com
36
+ executables: []
37
+
38
+ extensions: []
39
+
40
+ extra_rdoc_files:
41
+ - History.txt
42
+ - License.txt
43
+ - Manifest.txt
44
+ - README.txt
45
+ - website/index.txt
31
46
  files:
32
47
  - History.txt
33
48
  - License.txt
@@ -35,15 +50,16 @@ files:
35
50
  - README.txt
36
51
  - Rakefile
37
52
  - TODO
38
- - bin/couch_ruby_view_requestor
39
53
  - config/hoe.rb
40
54
  - config/requirements.rb
41
55
  - lib/couch_object.rb
42
56
  - lib/couch_object/database.rb
43
57
  - lib/couch_object/document.rb
44
- - lib/couch_object/model.rb
58
+ - lib/couch_object/error_classes.rb
45
59
  - lib/couch_object/persistable.rb
46
- - lib/couch_object/proc_condition.rb
60
+ - lib/couch_object/persistable/has_many_relations_array.rb
61
+ - lib/couch_object/persistable/meta_classes.rb
62
+ - lib/couch_object/persistable/overloaded_methods.rb
47
63
  - lib/couch_object/response.rb
48
64
  - lib/couch_object/server.rb
49
65
  - lib/couch_object/utils.rb
@@ -56,13 +72,36 @@ files:
56
72
  - script/txt2html
57
73
  - setup.rb
58
74
  - spec/database_spec.rb
75
+ - spec/database_spec.rb.orig
59
76
  - spec/document_spec.rb
60
77
  - spec/integration/database_integration_spec.rb
61
78
  - spec/integration/document_integration_spec.rb
62
79
  - spec/integration/integration_helper.rb
63
- - spec/model_spec.rb
64
- - spec/persistable_spec.rb
65
- - spec/proc_condition_spec.rb
80
+ - spec/persistable/callback.rb
81
+ - spec/persistable/callback_spec.rb
82
+ - spec/persistable/cloning.rb
83
+ - spec/persistable/cloning_spec.rb
84
+ - spec/persistable/comparing_objects.rb
85
+ - spec/persistable/comparing_objects_spec.rb
86
+ - spec/persistable/deleting.rb
87
+ - spec/persistable/deleting_spec.rb
88
+ - spec/persistable/error_messages.rb
89
+ - spec/persistable/error_messages_spec.rb
90
+ - spec/persistable/loading.rb
91
+ - spec/persistable/loading_spec.rb
92
+ - spec/persistable/new_methods.rb
93
+ - spec/persistable/new_methods_spec.rb
94
+ - spec/persistable/persistable_helper.rb
95
+ - spec/persistable/relations.rb
96
+ - spec/persistable/relations_spec.rb
97
+ - spec/persistable/saving.rb
98
+ - spec/persistable/saving_spec.rb
99
+ - spec/persistable/setting_storage_location.rb
100
+ - spec/persistable/setting_storage_location_spec.rb
101
+ - spec/persistable/timestamps.rb
102
+ - spec/persistable/timestamps_spec.rb
103
+ - spec/persistable/unsaved_changes.rb
104
+ - spec/persistable/unsaved_changes_spec.rb
66
105
  - spec/response_spec.rb
67
106
  - spec/rspec_autotest.rb
68
107
  - spec/server_spec.rb
@@ -79,39 +118,32 @@ files:
79
118
  - website/javascripts/rounded_corners_lite.inc.js
80
119
  - website/stylesheets/screen.css
81
120
  - website/template.rhtml
82
- test_files:
83
- - spec/spec_helper.rb
121
+ has_rdoc: true
122
+ homepage: http://couchobject.rubyforge.org
123
+ post_install_message:
84
124
  rdoc_options:
85
125
  - --main
86
126
  - README.txt
87
- extra_rdoc_files:
88
- - History.txt
89
- - License.txt
90
- - Manifest.txt
91
- - README.txt
92
- - website/index.txt
93
- executables:
94
- - couch_ruby_view_requestor
95
- extensions: []
96
-
127
+ require_paths:
128
+ - lib
129
+ required_ruby_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: "0"
134
+ version:
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: "0"
140
+ version:
97
141
  requirements: []
98
142
 
99
- dependencies:
100
- - !ruby/object:Gem::Dependency
101
- name: json
102
- version_requirement:
103
- version_requirements: !ruby/object:Gem::Version::Requirement
104
- requirements:
105
- - - ">="
106
- - !ruby/object:Gem::Version
107
- version: 1.1.1
108
- version:
109
- - !ruby/object:Gem::Dependency
110
- name: ruby2ruby
111
- version_requirement:
112
- version_requirements: !ruby/object:Gem::Version::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: 1.1.7
117
- version:
143
+ rubyforge_project: couchobject
144
+ rubygems_version: 1.1.0
145
+ signing_key:
146
+ specification_version: 2
147
+ summary: CouchObject is a library that maps ruby objects to CouchDb documents
148
+ test_files:
149
+ - spec/spec_helper.rb