couchobject 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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