ShyCouch 0.3.0 → 0.3.1
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/README.rdoc +68 -4
- data/ShyCouch.gemspec +1 -1
- data/VERSION +1 -1
- metadata +16 -16
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= ShyCouch
|
2
2
|
|
3
|
-
ShyCouch is a Ruby library for CouchDB. It's a data persistence layer that uses native objects and a simple query language, designed primarily to replace ActiveRecord in
|
3
|
+
ShyCouch is a Ruby library for CouchDB. It's a data persistence layer that uses native objects and a simple query language, designed primarily to replace ActiveRecord in Camping. A Python version is forthcoming.
|
4
4
|
|
5
5
|
I'm mainly putting this up for feedback at the moment. It's a complete mess, I haven't figured out where
|
6
6
|
|
@@ -8,18 +8,82 @@ ShyCouch does not come with an elaborate query language. It'll automatically cre
|
|
8
8
|
|
9
9
|
= Usage
|
10
10
|
|
11
|
-
|
11
|
+
put this in your helpers (this isn't entiiiirely working yet):
|
12
|
+
|
13
|
+
== Models
|
14
|
+
|
15
|
+
You don't need to define entity relationships or anything. Your models can just look like this:
|
16
|
+
|
17
|
+
module Food::Models
|
18
|
+
class Recipe < CouchDocument; end
|
19
|
+
end
|
20
|
+
|
21
|
+
You can do a bit more if you want:
|
22
|
+
|
23
|
+
module Food::Models
|
24
|
+
class Recipe < CouchDocument
|
25
|
+
needs :ingredients
|
26
|
+
needs :directions
|
27
|
+
suggests :cost
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
== Helpers
|
32
|
+
|
33
|
+
You define your map & reduce functions - your Couch views - in your Helpers.
|
34
|
+
|
35
|
+
module Food::Helpers
|
36
|
+
|
37
|
+
design do
|
38
|
+
view all_recipes do
|
39
|
+
map do
|
40
|
+
def function(doc)
|
41
|
+
if doc.kind == "recipe"
|
42
|
+
emit(doc)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
reduce do
|
47
|
+
# whatever
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
view ingredients do
|
53
|
+
# a different view
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
You can then call your views by name in your controllers:
|
58
|
+
|
59
|
+
module Food::Controllers
|
60
|
+
class Recipes < R '/recipes/'
|
61
|
+
@recipes = View.all_recipes
|
62
|
+
render :recipes
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
Views give you back a special JSON hash where you can treat the keys as object attributes and all that:
|
67
|
+
|
68
|
+
module Food::Views
|
69
|
+
recipes.each do |recipe|
|
70
|
+
h2 recipe.title
|
71
|
+
recipe.ingredients.each do |ingredient|
|
72
|
+
p "#{ingredient.name}: #{ingredient.quantity}"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
12
76
|
|
13
77
|
= Map/Reduce
|
14
78
|
|
15
79
|
ShyCouch uses the related ShyRubyJS library to parse Ruby blocks as JavaScript. This means you can do this:
|
16
80
|
|
17
|
-
map
|
81
|
+
map do
|
18
82
|
def function(doc)
|
19
83
|
if doc.kind == "post" and !doc.hidden
|
20
84
|
emit(doc)
|
21
85
|
end
|
22
|
-
|
86
|
+
end
|
23
87
|
|
24
88
|
and you'll get this:
|
25
89
|
|
data/ShyCouch.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ShyCouch}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
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}]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
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.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -15,7 +15,7 @@ date: 2011-08-20 00:00:00.000000000Z
|
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
18
|
-
requirement: &
|
18
|
+
requirement: &70261252696540 !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: *70261252696540
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: jeweler
|
29
|
-
requirement: &
|
29
|
+
requirement: &70261252694020 !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: *70261252694020
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: rcov
|
40
|
-
requirement: &
|
40
|
+
requirement: &70261252691920 !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: *70261252691920
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: sourcify
|
51
|
-
requirement: &
|
51
|
+
requirement: &70261252689660 !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: *70261252689660
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: ShyRubyJS
|
62
|
-
requirement: &
|
62
|
+
requirement: &70261252687980 !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: *70261252687980
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: ShyRubyJS
|
73
|
-
requirement: &
|
73
|
+
requirement: &70261252686580 !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: *70261252686580
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: sourcify
|
84
|
-
requirement: &
|
84
|
+
requirement: &70261252685280 !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: *70261252685280
|
93
93
|
description: Ruby API for CouchDB, designed to work with the Camping micro-framework.
|
94
94
|
email: danbryan@gmail.com
|
95
95
|
executables: []
|
@@ -134,7 +134,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
134
134
|
version: '0'
|
135
135
|
segments:
|
136
136
|
- 0
|
137
|
-
hash:
|
137
|
+
hash: 1342729704681637371
|
138
138
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
139
|
none: false
|
140
140
|
requirements:
|