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