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.
Files changed (4) hide show
  1. data/README.rdoc +68 -4
  2. data/ShyCouch.gemspec +1 -1
  3. data/VERSION +1 -1
  4. metadata +16 -16
@@ -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 micro-frameworks like Camping. A Python version is forthcoming.
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
- erghgrehg TODO
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
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ShyCouch}
8
- s.version = "0.3.0"
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.0
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.0
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: &70094608804280 !ruby/object:Gem::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: *70094608804280
26
+ version_requirements: *70261252696540
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jeweler
29
- requirement: &70094608801900 !ruby/object:Gem::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: *70094608801900
37
+ version_requirements: *70261252694020
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rcov
40
- requirement: &70094608799800 !ruby/object:Gem::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: *70094608799800
48
+ version_requirements: *70261252691920
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: sourcify
51
- requirement: &70094608797500 !ruby/object:Gem::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: *70094608797500
59
+ version_requirements: *70261252689660
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: ShyRubyJS
62
- requirement: &70094608795700 !ruby/object:Gem::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: *70094608795700
70
+ version_requirements: *70261252687980
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: ShyRubyJS
73
- requirement: &70094608794440 !ruby/object:Gem::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: *70094608794440
81
+ version_requirements: *70261252686580
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: sourcify
84
- requirement: &70094608793120 !ruby/object:Gem::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: *70094608793120
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: -2635305617772024091
137
+ hash: 1342729704681637371
138
138
  required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements: