ShyCouch 0.4.1 → 0.4.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/ShyCouch.gemspec +2 -3
- data/VERSION +1 -1
- data/lib/ShyCouch.rb +37 -18
- data/lib/ShyCouch/data.rb +22 -15
- data/test/test_ShyCouch.rb +2 -4
- data/test/test_couch_document.rb +2 -2
- data/test/test_couchdb_factory.rb +1 -1
- data/test/test_design_documents.rb +62 -14
- data/test/test_views.rb +18 -16
- metadata +19 -20
- data/test/test_camping_integration.rb +0 -15
data/ShyCouch.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ShyCouch}
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{Shy Inc.}, %q{Daniel Bryan}, %q{Cerales}]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-09-01}
|
13
13
|
s.description = %q{Ruby API for CouchDB, designed to work with the Camping micro-framework.}
|
14
14
|
s.email = %q{danbryan@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -32,7 +32,6 @@ Gem::Specification.new do |s|
|
|
32
32
|
"test/old-test.rb",
|
33
33
|
"test/old-tests.rb",
|
34
34
|
"test/test_ShyCouch.rb",
|
35
|
-
"test/test_camping_integration.rb",
|
36
35
|
"test/test_couch_document.rb",
|
37
36
|
"test/test_couchdb_api.rb",
|
38
37
|
"test/test_couchdb_factory.rb",
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.2
|
data/lib/ShyCouch.rb
CHANGED
@@ -43,7 +43,7 @@ module ShyCouch
|
|
43
43
|
init(settings)
|
44
44
|
end
|
45
45
|
|
46
|
-
attr_accessor :server, :name, :host, :port, :
|
46
|
+
attr_accessor :server, :name, :host, :port, :design_documents
|
47
47
|
|
48
48
|
def connect
|
49
49
|
@server = CouchServerConnection.new({"host"=>@host, "port"=>@port, "user"=>@user, "password"=>@password})
|
@@ -65,12 +65,16 @@ module ShyCouch
|
|
65
65
|
def create
|
66
66
|
@server.create_db(@name)
|
67
67
|
end
|
68
|
-
def
|
69
|
-
@server.
|
68
|
+
def get_document_by_id(id)
|
69
|
+
@server.get_document_by_id(@name, id)
|
70
|
+
end
|
71
|
+
def get_design_document_by_id(id)
|
72
|
+
doc = @server.get_document_by_id(@name, id)
|
73
|
+
ShyCouch::Data::Design.new(id).merge! doc
|
70
74
|
end
|
71
75
|
def all_docs
|
72
|
-
|
73
|
-
|
76
|
+
get_document_by_id('_all_docs').rows.map { |doc|
|
77
|
+
get_document_by_id(doc["id"])
|
74
78
|
}
|
75
79
|
end
|
76
80
|
def all_docs_with(attribute, value=nil)
|
@@ -92,27 +96,41 @@ module ShyCouch
|
|
92
96
|
end
|
93
97
|
|
94
98
|
def pull_document(document)
|
95
|
-
@server.
|
99
|
+
@server.pull_document(self.name, document)
|
96
100
|
end
|
97
101
|
|
98
102
|
def push_document(document)
|
99
103
|
@server.push_document(self.name, document)
|
100
104
|
end
|
101
105
|
|
102
|
-
def
|
103
|
-
@
|
106
|
+
def add_design_document(design)
|
107
|
+
@design_documents << design
|
108
|
+
end
|
109
|
+
|
110
|
+
def add_design_documents_and_push(*docs)
|
111
|
+
docs.each do |doc|
|
112
|
+
@design_documents << doc
|
113
|
+
end
|
114
|
+
push_design_documents
|
115
|
+
end
|
116
|
+
|
117
|
+
def push_design_documents
|
118
|
+
@design_documents.each do |design|
|
119
|
+
design.push(self)
|
120
|
+
end
|
104
121
|
end
|
105
122
|
|
106
|
-
def
|
107
|
-
|
123
|
+
def view(design, view_obj)
|
124
|
+
url = "#{design._id}/_view/#{view_obj.name}"
|
125
|
+
get_document_by_id(url)
|
108
126
|
end
|
109
127
|
|
110
128
|
private
|
111
129
|
|
112
|
-
def init(settings)
|
130
|
+
def init(settings, design_documents = [])
|
113
131
|
db_settings = settings["db"]
|
114
132
|
@host, @port, @name, @user, @password = db_settings["host"],db_settings["port"], db_settings["name"],db_settings["user"], db_settings["password"]
|
115
|
-
@
|
133
|
+
@design_documents = design_documents
|
116
134
|
@server = CouchServerConnection.allocate
|
117
135
|
end
|
118
136
|
|
@@ -155,7 +173,7 @@ module ShyCouch
|
|
155
173
|
end
|
156
174
|
|
157
175
|
def pull_all_design_docs(db_name)
|
158
|
-
pull_all_doc_ids(db_name).map {
|
176
|
+
pull_all_doc_ids(db_name).map { get_document_by_id(db_name, id) if id[0,7] == "_design" }
|
159
177
|
end
|
160
178
|
|
161
179
|
def pull_all_doc_ids(db_name)
|
@@ -166,9 +184,12 @@ module ShyCouch
|
|
166
184
|
pull_all_doc_ids(db_name).map { |id| Data::CouchDocument.new(get("/#{db_name}/#{id}")) }
|
167
185
|
end
|
168
186
|
|
169
|
-
def
|
187
|
+
def get_document_by_id(db_name, id)
|
170
188
|
document = Data::CouchDocument.new(get("/#{db_name}/#{id}"))
|
171
189
|
end
|
190
|
+
def pull_document(db_name, document)
|
191
|
+
document = Data::CouchDocument.new(get("/#{db_name}/#{document._id}"))
|
192
|
+
end
|
172
193
|
|
173
194
|
def delete_document(db_name, id)
|
174
195
|
delete("/#{db_name}/#{id}")
|
@@ -192,12 +213,10 @@ module ShyCouch
|
|
192
213
|
#TODO - return success more meaningfully maybe?
|
193
214
|
end
|
194
215
|
|
195
|
-
|
196
|
-
document = Data::CouchDocument.new(get("/#{db_name}/#{id}"))
|
197
|
-
end
|
216
|
+
|
198
217
|
|
199
218
|
def push_document(db_name, document)
|
200
|
-
raise TypeError unless document.
|
219
|
+
raise TypeError unless document.kind_of?(Data::CouchDocument)
|
201
220
|
raise JSON::GeneratorError unless document.valid?
|
202
221
|
if document["_rev"]
|
203
222
|
put("/#{db_name}/#{document._id}?rev=#{document._rev}/", document.to_json)
|
data/lib/ShyCouch/data.rb
CHANGED
@@ -11,13 +11,14 @@ module ShyCouch
|
|
11
11
|
def initialize(hash={})
|
12
12
|
# Assumes that the "kind" is the class name unless explicitly stated otherwise
|
13
13
|
# TODO - maybe just force it to be the class name no matter what tbh
|
14
|
-
hash["kind"] = self.class.to_s unless hash["kind"]
|
14
|
+
hash["kind"] = self.class.to_s.split("::").last unless hash["kind"]
|
15
15
|
merge!(hash)
|
16
16
|
raise TypeError unless valid?
|
17
17
|
# super(hash)
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.all
|
21
|
+
|
21
22
|
end
|
22
23
|
|
23
24
|
def self.needs(*requirements)
|
@@ -56,7 +57,7 @@ module ShyCouch
|
|
56
57
|
end
|
57
58
|
|
58
59
|
def pull(database=nil)
|
59
|
-
database
|
60
|
+
database ||= $couchdb
|
60
61
|
new_doc = database.pull_document(self)
|
61
62
|
if new_doc
|
62
63
|
self.clear
|
@@ -65,10 +66,9 @@ module ShyCouch
|
|
65
66
|
end
|
66
67
|
|
67
68
|
def push(database = nil)
|
68
|
-
|
69
|
-
database = $couchdb unless database
|
69
|
+
database ||= $couchdb
|
70
70
|
res = database.push_document(self)
|
71
|
-
self["_id"] = res["id"]
|
71
|
+
self["_id"] = res["id"] unless self["_id"]
|
72
72
|
self["_rev"] = res["rev"]
|
73
73
|
return res
|
74
74
|
end
|
@@ -96,8 +96,12 @@ module ShyCouch
|
|
96
96
|
|
97
97
|
class View
|
98
98
|
attr_accessor :map, :reduce, :name
|
99
|
+
JS_MAP_FUNCTION_HEADER = "function ( doc ) { \n "
|
100
|
+
JS_REDUCE_FUNCTION_HEADER = "function(key, values, rereduce) { \n "
|
101
|
+
JS_FUNCTION_FOOTER = "}"
|
99
102
|
|
100
103
|
def initialize(view_name, &block)
|
104
|
+
#O TODO - oh dear this is a nightmare
|
101
105
|
@parser = ShyRubyJS::ShySexpParser.new
|
102
106
|
sexp_check = block.to_sexp
|
103
107
|
sexp = block.to_sexp(:strip_enclosure=>true)
|
@@ -112,11 +116,11 @@ module ShyCouch
|
|
112
116
|
[1,2].each { |num|
|
113
117
|
2.times { sexp[num].delete_at(1) }
|
114
118
|
}
|
115
|
-
@map = @parser.parse(sexp[1])[0]
|
116
|
-
@reduce = @parser.parse(sexp[2])
|
119
|
+
@map = JS_MAP_FUNCTION_HEADER + @parser.parse(sexp[1])[0] + JS_FUNCTION_FOOTER
|
120
|
+
@reduce = JS_REDUCE_FUNCTION_HEADER + @parser.parse(sexp[2])[0] + JS_FUNCTION_FOOTER
|
117
121
|
elsif sexp[0] == :iter
|
118
122
|
raise ShyCouchError, "view must be called with map block and optional reduce block" unless sexp[1][2] == :map
|
119
|
-
@map = @parser.parse(sexp[3])
|
123
|
+
@map = JS_MAP_FUNCTION_HEADER + @parser.parse(sexp[3]) + JS_FUNCTION_FOOTER
|
120
124
|
end
|
121
125
|
end
|
122
126
|
|
@@ -126,22 +130,25 @@ module ShyCouch
|
|
126
130
|
h.merge!({"reduce" => @reduce}) if @reduce
|
127
131
|
return h
|
128
132
|
end
|
133
|
+
|
134
|
+
def functions
|
135
|
+
return {"map" => @map, "reduce" => @reduce}
|
136
|
+
end
|
129
137
|
end
|
130
138
|
|
131
139
|
class Design < CouchDocument
|
132
140
|
# this is used to manage design documents
|
133
141
|
# In practise, the Controllers should be a list of classes corresponding to design documents
|
134
142
|
|
135
|
-
def initialize(name)
|
143
|
+
def initialize(name, views=[])
|
136
144
|
merge! "_id" => "_design/#{name.to_s}"
|
137
145
|
@parser = ShyRubyJS::ShySexpParser.new
|
146
|
+
h = {"views" => {}}
|
147
|
+
views.each do |view|
|
148
|
+
h["views"][view.name] = view.functions
|
149
|
+
end
|
150
|
+
merge! h
|
138
151
|
end
|
139
|
-
|
140
|
-
def self.setup
|
141
|
-
# setup_all_view
|
142
|
-
end
|
143
|
-
|
144
|
-
def push;end #must override push in order to set the ID
|
145
152
|
end
|
146
153
|
|
147
154
|
end
|
data/test/test_ShyCouch.rb
CHANGED
@@ -7,8 +7,8 @@ require_relative '../lib/ShyCouch'
|
|
7
7
|
# Settings for a database that is set up and working, with an admin user
|
8
8
|
$settings = {
|
9
9
|
"db"=> {
|
10
|
-
"host" => "ramponeau.local",
|
11
|
-
|
10
|
+
# "host" => "ramponeau.local",
|
11
|
+
"host" => "localhost",
|
12
12
|
"port" => 5984,
|
13
13
|
"name" => "test",
|
14
14
|
"user" => "cerales",
|
@@ -26,8 +26,6 @@ require_relative 'test_fields'
|
|
26
26
|
# test ShyCouch::Data::CouchDocument
|
27
27
|
require_relative 'test_couch_document'
|
28
28
|
|
29
|
-
require_relative 'test_camping_integration'
|
30
|
-
|
31
29
|
require_relative 'test_couchdb_factory'
|
32
30
|
|
33
31
|
require_relative 'test_design_documents'
|
data/test/test_couch_document.rb
CHANGED
@@ -98,7 +98,7 @@ class CouchDocumentTests# < Test::Unit::TestCase
|
|
98
98
|
assert(doc["_id"])
|
99
99
|
assert(doc["_rev"])
|
100
100
|
# get the new doc
|
101
|
-
newDoc = $couchdb.
|
101
|
+
newDoc = $couchdb.pull_document(doc)
|
102
102
|
# test equality of all the attributes aside from id and rev on the new document
|
103
103
|
doc.attr_keys.each { |k|
|
104
104
|
assert_equal(doc["k"], newDoc["k"])
|
@@ -120,7 +120,7 @@ class CouchDocumentTests# < Test::Unit::TestCase
|
|
120
120
|
assert(res["ok"])
|
121
121
|
|
122
122
|
# pull it from the database again
|
123
|
-
checkDoc = $couchdb.
|
123
|
+
checkDoc = $couchdb.pull_document(doc)
|
124
124
|
|
125
125
|
# check that the one from the database has all the new attributes
|
126
126
|
assert_equal(doc.owner, checkDoc.owner)
|
@@ -2,24 +2,72 @@ require 'test/unit'
|
|
2
2
|
require_relative '../lib/ShyCouch.rb'
|
3
3
|
|
4
4
|
class DesignDocumentTests
|
5
|
-
class
|
5
|
+
class TestDesignDocument < Test::Unit::TestCase
|
6
6
|
Design = ShyCouch::Data::Design
|
7
|
-
|
8
|
-
def teardown; end
|
7
|
+
CouchDocument = ShyCouch::Data::CouchDocument
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
9
|
+
class Recipe < CouchDocument
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
def setup
|
14
|
+
valid_settings = $settings
|
15
|
+
@couchdb = ShyCouch.getDB(valid_settings)
|
16
|
+
@views = setup_views
|
17
|
+
@design = nil
|
18
|
+
end
|
19
|
+
def teardown
|
20
|
+
@couchdb.delete_database
|
21
|
+
@couchdb = nil
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
def test_create_design
|
27
|
+
assert_nothing_raised {
|
28
|
+
@design = setup_design_document
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_push_to_db
|
33
|
+
design = setup_design_document
|
34
|
+
@couchdb.add_design_documents_and_push(design)
|
35
|
+
new_doc = @couchdb.get_design_document_by_id(design._id)
|
36
|
+
assert_equal(design.as_hash, new_doc.as_hash)
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_call_views
|
40
|
+
design = setup_design_document
|
41
|
+
@couchdb.add_design_documents_and_push(design)
|
42
|
+
add_some_documents
|
43
|
+
puts design.views["count_recipes"]
|
44
|
+
require 'irb'
|
45
|
+
IRB.start
|
46
|
+
end
|
47
|
+
|
48
|
+
def setup_views
|
49
|
+
view1 = ShyCouch::Data::View.new :recipes do
|
50
|
+
map do
|
51
|
+
emit(doc._id, doc.name) if doc.kind == 'Recipe'
|
18
52
|
end
|
19
53
|
end
|
20
|
-
|
21
|
-
|
22
|
-
|
54
|
+
view2 = ShyCouch::Data::View.new :count_recipes do
|
55
|
+
map do
|
56
|
+
emit(doc._id) if doc.kind == 'Recipe'
|
57
|
+
end
|
58
|
+
reduce do
|
59
|
+
return sum(values)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
return [view1, view2]
|
63
|
+
end
|
64
|
+
def setup_design_document
|
65
|
+
return ShyCouch::Data::Design.new :test_design, @views
|
66
|
+
end
|
67
|
+
def add_some_documents
|
68
|
+
4.times do
|
69
|
+
Recipe.new.push(@couchdb)
|
70
|
+
end
|
23
71
|
end
|
24
72
|
end
|
25
73
|
end
|
data/test/test_views.rb
CHANGED
@@ -3,49 +3,51 @@ require_relative '../lib/ShyCouch.rb'
|
|
3
3
|
|
4
4
|
class CouchViewTests < Test::Unit::TestCase
|
5
5
|
JS_MAP_FUNCTION_HEADER = "function ( doc ) { \n "
|
6
|
-
JS_REDUCE_FUNCTION_HEADER = "function(key, values, rereduce)"
|
6
|
+
JS_REDUCE_FUNCTION_HEADER = "function(key, values, rereduce) { \n "
|
7
7
|
JS_FUNCTION_FOOTER = "}"
|
8
8
|
def setup
|
9
9
|
@couch_views = []
|
10
10
|
end
|
11
11
|
|
12
12
|
def view(view_name, &block)
|
13
|
+
#for convenience, and to imitate how it would be used in Camping
|
13
14
|
@couch_views << ShyCouch::Data::View.new(view_name, &block)
|
14
15
|
end
|
15
16
|
def teardown; end
|
16
17
|
|
18
|
+
class Leg < ShyCouch::Data::CouchDocument
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_query_all
|
23
|
+
|
24
|
+
end
|
25
|
+
|
17
26
|
def test_define_map_view
|
18
27
|
view :five_star_butts do
|
19
28
|
map do
|
20
|
-
def function(doc)
|
29
|
+
# def function(doc)
|
21
30
|
emit(doc) if doc.kind == "butt" and doc.star_rating == 5
|
22
|
-
end
|
31
|
+
# end
|
23
32
|
end
|
24
33
|
end
|
25
|
-
expected_js = JS_MAP_FUNCTION_HEADER + %{if( doc.kind ==
|
34
|
+
expected_js = JS_MAP_FUNCTION_HEADER + %{if( doc.kind == 'butt' && doc.star_rating == 5 ) {\n emit(doc)\n}} + JS_FUNCTION_FOOTER
|
26
35
|
assert_equal(expected_js, @couch_views[0].map)
|
27
|
-
# puts @couch_views[0].map
|
28
36
|
end
|
29
37
|
|
30
38
|
def test_define_map_and_reduce_view
|
31
39
|
view :beggar_count do
|
32
40
|
map do
|
33
|
-
|
34
|
-
emit(doc) if doc.kind == "beggar"
|
35
|
-
end
|
41
|
+
emit(doc) if doc.kind == "beggar"
|
36
42
|
end
|
37
43
|
reduce do
|
38
|
-
|
39
|
-
return sum(values)
|
40
|
-
end
|
44
|
+
return sum(values)
|
41
45
|
end
|
42
46
|
end
|
43
|
-
|
44
|
-
|
45
|
-
expected_map = JS_MAP_FUNCTION_HEADER + %{if( doc.kind == "beggar" ) {\n emit(doc)\n} \n } + JS_FUNCTION_FOOTER
|
46
|
-
expected_rejuce = JS_REDUCE_FUNCTION_HEADER
|
47
|
+
expected_map = JS_MAP_FUNCTION_HEADER + %{if( doc.kind == 'beggar' ) {\n emit(doc)\n}} + JS_FUNCTION_FOOTER
|
48
|
+
expected_reduce = JS_REDUCE_FUNCTION_HEADER + %{return sum(values);} + JS_FUNCTION_FOOTER
|
47
49
|
assert_equal(expected_map, @couch_views[0].map)
|
48
|
-
|
50
|
+
assert_equal(expected_reduce, @couch_views[0].reduce)
|
49
51
|
end
|
50
52
|
|
51
53
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ShyCouch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,11 +11,11 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-09-01 00:00:00.000000000Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: ShyRubyJS
|
18
|
-
requirement: &
|
18
|
+
requirement: &70241067513520 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ! '>='
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: '0'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *70241067513520
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
|
-
requirement: &
|
29
|
+
requirement: &70241067513040 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: 1.0.0
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *70241067513040
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: jeweler
|
40
|
-
requirement: &
|
40
|
+
requirement: &70241067512560 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: 1.6.4
|
46
46
|
type: :development
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *70241067512560
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: rcov
|
51
|
-
requirement: &
|
51
|
+
requirement: &70241067512080 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ! '>='
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: '0'
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *70241067512080
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: sourcify
|
62
|
-
requirement: &
|
62
|
+
requirement: &70241067511600 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ~>
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
version: 0.5.0
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *70241067511600
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: ShyRubyJS
|
73
|
-
requirement: &
|
73
|
+
requirement: &70241067511120 !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
76
|
- - ! '>='
|
@@ -78,10 +78,10 @@ dependencies:
|
|
78
78
|
version: '0'
|
79
79
|
type: :development
|
80
80
|
prerelease: false
|
81
|
-
version_requirements: *
|
81
|
+
version_requirements: *70241067511120
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: ShyRubyJS
|
84
|
-
requirement: &
|
84
|
+
requirement: &70241067510640 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
87
87
|
- - ! '>='
|
@@ -89,10 +89,10 @@ dependencies:
|
|
89
89
|
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
|
-
version_requirements: *
|
92
|
+
version_requirements: *70241067510640
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: sourcify
|
95
|
-
requirement: &
|
95
|
+
requirement: &70241067510160 !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
97
97
|
requirements:
|
98
98
|
- - ! '>='
|
@@ -100,7 +100,7 @@ dependencies:
|
|
100
100
|
version: '0'
|
101
101
|
type: :runtime
|
102
102
|
prerelease: false
|
103
|
-
version_requirements: *
|
103
|
+
version_requirements: *70241067510160
|
104
104
|
description: Ruby API for CouchDB, designed to work with the Camping micro-framework.
|
105
105
|
email: danbryan@gmail.com
|
106
106
|
executables: []
|
@@ -124,7 +124,6 @@ files:
|
|
124
124
|
- test/old-test.rb
|
125
125
|
- test/old-tests.rb
|
126
126
|
- test/test_ShyCouch.rb
|
127
|
-
- test/test_camping_integration.rb
|
128
127
|
- test/test_couch_document.rb
|
129
128
|
- test/test_couchdb_api.rb
|
130
129
|
- test/test_couchdb_factory.rb
|
@@ -146,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
146
145
|
version: '0'
|
147
146
|
segments:
|
148
147
|
- 0
|
149
|
-
hash:
|
148
|
+
hash: 4020979240365981983
|
150
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
150
|
none: false
|
152
151
|
requirements:
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require_relative '../lib/ShyCouch.rb'
|
3
|
-
|
4
|
-
class CampingIntegrationTests
|
5
|
-
|
6
|
-
class TestModelInheritence < Test::Unit::TestCase
|
7
|
-
|
8
|
-
class InheritanceTest < ShyCouch::Data::CouchDocument; end
|
9
|
-
def test_document_kind_assignment
|
10
|
-
m = InheritanceTest.new
|
11
|
-
assert_equal(InheritanceTest.to_s, m.kind)
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
15
|
-
end
|