ShyCouch 0.0.0 → 0.1.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.
- data/ShyCouch.gemspec +3 -2
- data/VERSION +1 -1
- data/lib/ShyCouch.rb +34 -35
- data/test/test_ShyCouch.rb +5 -1
- data/test/test_couchdb_factory.rb +1 -1
- data/test/test_design_documents.rb +25 -0
- metadata +18 -17
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.
|
8
|
+
s.version = "0.1.0"
|
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-08-
|
12
|
+
s.date = %q{2011-08-19}
|
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 = [
|
@@ -34,6 +34,7 @@ Gem::Specification.new do |s|
|
|
34
34
|
"test/test_couch_document.rb",
|
35
35
|
"test/test_couchdb_api.rb",
|
36
36
|
"test/test_couchdb_factory.rb",
|
37
|
+
"test/test_design_documents.rb",
|
37
38
|
"test/test_fields.rb"
|
38
39
|
]
|
39
40
|
s.homepage = %q{http://github.com/Cerales/ShyCouch}
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.1.0
|
data/lib/ShyCouch.rb
CHANGED
@@ -32,42 +32,9 @@ module ShyCouch
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
|
36
35
|
module Data
|
37
|
-
class Model < Hash
|
38
|
-
# takes hash that will be the document contents as well as an array of expected keys for validation
|
39
|
-
# todo - enforce keys that work as attrs
|
40
|
-
|
41
|
-
def initialize(hash=nil, requirements)
|
42
|
-
@requirements = requirements
|
43
|
-
merge!(hash) if hash
|
44
|
-
raise TypeError unless valid? #TODO - should raise a more specific and useful error
|
45
|
-
end
|
46
|
-
|
47
|
-
def method_missing(name, *args)
|
48
|
-
# Makes the object behave as if the hash keys are instance properties with attr_accessors
|
49
|
-
if name.to_s
|
50
|
-
if name[name.length-1] == "="
|
51
|
-
key = name[0, name.length-1]
|
52
|
-
if self.key?(key)
|
53
|
-
self[key] = args
|
54
|
-
return args
|
55
|
-
end
|
56
|
-
else
|
57
|
-
return self[name.to_s] unless !self[name.to_s]
|
58
|
-
end
|
59
|
-
end
|
60
|
-
super
|
61
|
-
end
|
62
|
-
|
63
|
-
def respond_to?(method)
|
64
|
-
# so that testing for whether it responds to a method is equivalent to testing for the existence of a key
|
65
|
-
return true if self.key?(method.to_s)
|
66
|
-
super
|
67
|
-
end
|
68
|
-
end
|
69
36
|
|
70
|
-
class CouchDocument <
|
37
|
+
class CouchDocument < Hash
|
71
38
|
class << self
|
72
39
|
# allows instance.class.requirements to be called
|
73
40
|
attr_accessor :requirements
|
@@ -77,9 +44,17 @@ module ShyCouch
|
|
77
44
|
# Assumes that the "kind" is the class name unless explicitly stated otherwise
|
78
45
|
# TODO - maybe just force it to be the class name no matter what tbh
|
79
46
|
hash["kind"] = self.class.to_s unless hash["kind"]
|
80
|
-
|
47
|
+
merge!(hash)
|
48
|
+
raise TypeError unless valid?
|
49
|
+
# super(hash)
|
81
50
|
end
|
82
51
|
|
52
|
+
# def initialize(hash=nil, requirements)
|
53
|
+
# @requirements = requirements
|
54
|
+
# merge!(hash) if hash
|
55
|
+
# raise TypeError unless valid? #TODO - should raise a more specific and useful error
|
56
|
+
# end
|
57
|
+
|
83
58
|
def self.all
|
84
59
|
database = CouchDatabase.new($settings)
|
85
60
|
database.get()
|
@@ -134,7 +109,31 @@ module ShyCouch
|
|
134
109
|
rescue JSON::GeneratorError
|
135
110
|
false
|
136
111
|
end
|
112
|
+
|
113
|
+
def method_missing(m, *a)
|
114
|
+
# Makes the object behave as if the hash keys are instance properties with attr_accessors
|
115
|
+
# Had a dozen lines or so for this and found a one-line implementation of the same thing in Camping.
|
116
|
+
m.to_s =~ /=$/ ? self[$`] = a[0] : a == [] ? self[m.to_s] : super
|
117
|
+
end
|
118
|
+
|
119
|
+
def respond_to?(method)
|
120
|
+
# so that testing for whether it responds to a method is equivalent to testing for the existence of a key
|
121
|
+
self.key?(method.to_s) ? true : super
|
122
|
+
end
|
123
|
+
|
137
124
|
end
|
125
|
+
|
126
|
+
class Design < CouchDocument
|
127
|
+
# this is used to manage design documents
|
128
|
+
# In practise, the Controllers should be a list of classes corresponding to design documents
|
129
|
+
|
130
|
+
def map(&block);end
|
131
|
+
|
132
|
+
def reduce(&block);end
|
133
|
+
|
134
|
+
def push;end #must override push in order to set the ID
|
135
|
+
end
|
136
|
+
|
138
137
|
end
|
139
138
|
|
140
139
|
module Fields
|
data/test/test_ShyCouch.rb
CHANGED
@@ -25,4 +25,8 @@ require_relative 'test_fields'
|
|
25
25
|
# test ShyCouch::Data::CouchDocument
|
26
26
|
require_relative 'test_couch_document'
|
27
27
|
|
28
|
-
require_relative 'test_camping_integration'
|
28
|
+
require_relative 'test_camping_integration'
|
29
|
+
|
30
|
+
require_relative 'test_couchdb_factory'
|
31
|
+
|
32
|
+
require_relative 'test_design_documents'
|
@@ -10,6 +10,6 @@ class TestCouchDBFactory < Test::Unit::TestCase
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_create_database
|
13
|
-
assert_kind_of(ShyCouch::CouchDBAPI, ShyCouch::Create
|
13
|
+
assert_kind_of(ShyCouch::CouchDBAPI, ShyCouch::Connection.Create(@valid_settings))
|
14
14
|
end
|
15
15
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require_relative '../lib/ShyCouch.rb'
|
3
|
+
|
4
|
+
class DesignDocumentTests
|
5
|
+
class TestDesignDocumentCreation < Test::Unit::TestCase
|
6
|
+
Design = ShyCouch::Data::Design
|
7
|
+
def setup; end
|
8
|
+
def teardown; end
|
9
|
+
|
10
|
+
class TestDesign < Design
|
11
|
+
def view_cigars
|
12
|
+
map do
|
13
|
+
|
14
|
+
end
|
15
|
+
reduce do
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
def test_define_design_document
|
21
|
+
#todo
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
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
|
+
version: 0.1.0
|
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-08-
|
14
|
+
date: 2011-08-19 00:00:00.000000000Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
18
|
-
requirement: &
|
18
|
+
requirement: &70325757147520 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ~>
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: 1.0.0
|
24
24
|
type: :development
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *70325757147520
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: jeweler
|
29
|
-
requirement: &
|
29
|
+
requirement: &70325757146600 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: 1.6.4
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *70325757146600
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: rcov
|
40
|
-
requirement: &
|
40
|
+
requirement: &70325757145640 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ! '>='
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: '0'
|
46
46
|
type: :development
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *70325757145640
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: sourcify
|
51
|
-
requirement: &
|
51
|
+
requirement: &70325757144660 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ~>
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: 0.5.0
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *70325757144660
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: ShyRubyJS
|
62
|
-
requirement: &
|
62
|
+
requirement: &70325757143980 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ! '>='
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
version: '0'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *70325757143980
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: ShyRubyJS
|
73
|
-
requirement: &
|
73
|
+
requirement: &70325757142780 !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: :runtime
|
80
80
|
prerelease: false
|
81
|
-
version_requirements: *
|
81
|
+
version_requirements: *70325757142780
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: sourcify
|
84
|
-
requirement: &
|
84
|
+
requirement: &70325757120860 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
87
87
|
- - ! '>='
|
@@ -89,7 +89,7 @@ dependencies:
|
|
89
89
|
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
|
-
version_requirements: *
|
92
|
+
version_requirements: *70325757120860
|
93
93
|
description: Ruby API for CouchDB, designed to work with the Camping micro-framework.
|
94
94
|
email: danbryan@gmail.com
|
95
95
|
executables: []
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- test/test_couch_document.rb
|
116
116
|
- test/test_couchdb_api.rb
|
117
117
|
- test/test_couchdb_factory.rb
|
118
|
+
- test/test_design_documents.rb
|
118
119
|
- test/test_fields.rb
|
119
120
|
homepage: http://github.com/Cerales/ShyCouch
|
120
121
|
licenses:
|
@@ -131,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
131
132
|
version: '0'
|
132
133
|
segments:
|
133
134
|
- 0
|
134
|
-
hash:
|
135
|
+
hash: -2665238797282085994
|
135
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
137
|
none: false
|
137
138
|
requirements:
|