ShyCouch 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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.6.0
4
+ version: 0.7.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-09-24 00:00:00.000000000Z
14
+ date: 2011-10-22 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: ShyRubyJS
18
- requirement: &70284357957800 !ruby/object:Gem::Requirement
17
+ name: rest-client
18
+ requirement: &70333812928800 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,54 +23,54 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70284357957800
26
+ version_requirements: *70333812928800
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: &70284357957320 !ruby/object:Gem::Requirement
28
+ name: sourcify
29
+ requirement: &70333812928320 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ~>
33
33
  - !ruby/object:Gem::Version
34
- version: 1.0.0
35
- type: :development
34
+ version: 0.5.0
35
+ type: :runtime
36
36
  prerelease: false
37
- version_requirements: *70284357957320
37
+ version_requirements: *70333812928320
38
38
  - !ruby/object:Gem::Dependency
39
- name: jeweler
40
- requirement: &70284357956840 !ruby/object:Gem::Requirement
39
+ name: ShyRubyJS
40
+ requirement: &70333812927840 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ~>
43
+ - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: 1.6.4
46
- type: :development
45
+ version: 0.2.0
46
+ type: :runtime
47
47
  prerelease: false
48
- version_requirements: *70284357956840
48
+ version_requirements: *70333812927840
49
49
  - !ruby/object:Gem::Dependency
50
- name: rcov
51
- requirement: &70284357956360 !ruby/object:Gem::Requirement
50
+ name: bundler
51
+ requirement: &70333812927360 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
- - - ! '>='
54
+ - - ~>
55
55
  - !ruby/object:Gem::Version
56
- version: '0'
56
+ version: 1.0.0
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *70284357956360
59
+ version_requirements: *70333812927360
60
60
  - !ruby/object:Gem::Dependency
61
- name: sourcify
62
- requirement: &70284357955880 !ruby/object:Gem::Requirement
61
+ name: jeweler
62
+ requirement: &70333812926880 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ~>
66
66
  - !ruby/object:Gem::Version
67
- version: 0.5.0
67
+ version: 1.6.4
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *70284357955880
70
+ version_requirements: *70333812926880
71
71
  - !ruby/object:Gem::Dependency
72
- name: ShyRubyJS
73
- requirement: &70284357955400 !ruby/object:Gem::Requirement
72
+ name: rcov
73
+ requirement: &70333812926400 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,21 +78,21 @@ dependencies:
78
78
  version: '0'
79
79
  type: :development
80
80
  prerelease: false
81
- version_requirements: *70284357955400
81
+ version_requirements: *70333812926400
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: ShyRubyJS
84
- requirement: &70284357954920 !ruby/object:Gem::Requirement
84
+ requirement: &70333812925920 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ! '>='
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 0.2.0
90
90
  type: :runtime
91
91
  prerelease: false
92
- version_requirements: *70284357954920
92
+ version_requirements: *70333812925920
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: rest-client
95
- requirement: &70284357954440 !ruby/object:Gem::Requirement
95
+ requirement: &70333812925440 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ! '>='
@@ -100,10 +100,21 @@ dependencies:
100
100
  version: 1.6.7
101
101
  type: :runtime
102
102
  prerelease: false
103
- version_requirements: *70284357954440
103
+ version_requirements: *70333812925440
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: sourcify
106
- requirement: &70284357953960 !ruby/object:Gem::Requirement
106
+ requirement: &70333812924960 !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ type: :runtime
113
+ prerelease: false
114
+ version_requirements: *70333812924960
115
+ - !ruby/object:Gem::Dependency
116
+ name: mime-types
117
+ requirement: &70333812924480 !ruby/object:Gem::Requirement
107
118
  none: false
108
119
  requirements:
109
120
  - - ! '>='
@@ -111,33 +122,29 @@ dependencies:
111
122
  version: '0'
112
123
  type: :runtime
113
124
  prerelease: false
114
- version_requirements: *70284357953960
125
+ version_requirements: *70333812924480
115
126
  description: Ruby API for CouchDB, designed to work with the Camping micro-framework.
116
127
  email: danbryan@gmail.com
117
128
  executables: []
118
129
  extensions: []
119
130
  extra_rdoc_files:
120
131
  - LICENSE.txt
121
- - README
122
132
  files:
123
- - .document
124
133
  - Gemfile
125
- - Gemfile.lock
126
134
  - LICENSE.txt
127
- - README
128
135
  - Rakefile
129
- - ShyCouch.gemspec
130
136
  - VERSION
131
- - design_notes.rb
132
137
  - lib/ShyCouch.rb
133
138
  - lib/ShyCouch/data.rb
134
139
  - lib/ShyCouch/fields.rb
140
+ - readme.md
135
141
  - test/helper.rb
136
142
  - test/test_ShyCouch.rb
137
143
  - test/test_couch_document.rb
138
144
  - test/test_couchdb_api.rb
139
145
  - test/test_couchdb_factory.rb
140
146
  - test/test_design_documents.rb
147
+ - test/test_document_validation.rb
141
148
  - test/test_fields.rb
142
149
  - test/test_views.rb
143
150
  homepage: http://github.com/Cerales/ShyCouch
@@ -155,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
155
162
  version: '0'
156
163
  segments:
157
164
  - 0
158
- hash: -2651663880212191407
165
+ hash: 704426327804299502
159
166
  required_rubygems_version: !ruby/object:Gem::Requirement
160
167
  none: false
161
168
  requirements:
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
@@ -1,36 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- ShyRubyJS (0.0.1)
5
- sourcify (~> 0)
6
- file-tail (1.0.6)
7
- spruz (~> 0.2)
8
- git (1.2.5)
9
- jeweler (1.6.4)
10
- bundler (~> 1.0)
11
- git (>= 1.2.5)
12
- rake
13
- rake (0.9.2)
14
- rcov (0.9.10)
15
- ruby2ruby (1.2.5)
16
- ruby_parser (~> 2.0)
17
- sexp_processor (~> 3.0)
18
- ruby_parser (2.0.6)
19
- sexp_processor (~> 3.0)
20
- sexp_processor (3.0.5)
21
- sourcify (0.5.0)
22
- file-tail (>= 1.0.5)
23
- ruby2ruby (>= 1.2.5)
24
- ruby_parser (>= 2.0.5)
25
- sexp_processor (>= 3.0.5)
26
- spruz (0.2.12)
27
-
28
- PLATFORMS
29
- ruby
30
-
31
- DEPENDENCIES
32
- ShyRubyJS
33
- bundler (~> 1.0.0)
34
- jeweler (~> 1.6.4)
35
- rcov
36
- sourcify (~> 0.5.0)
data/README DELETED
@@ -1,117 +0,0 @@
1
- = ShyCouch
2
-
3
- ShyCouch is a Ruby library for CouchDB. It's a data persistence layer that uses native objects and lets you write native Ruby blocks that'll be parsed into MapReduce JavaScript functions.
4
-
5
- The structure is a bit of a mess, but essentially it provides:
6
-
7
- - a database object
8
- - a CouchDocument object, which is a glorified hash
9
- - a Design object representing the Design document for an app in CouchDB
10
-
11
- At the moment, all views have to be written manually. I'm currently evaluating the wisdom of building a query language to dynamically write views and cache them in Couch.
12
-
13
- = Usage
14
-
15
- require 'shycouch'
16
- settings = {
17
- "db"=> {
18
- "host" => "ramponeau.local",
19
- "port" => 5984,
20
- "name" => "food",
21
- "user" => "cerales",
22
- "password" => "password"
23
- },
24
- }
25
- db = ShyCouch::CouchDatabase()
26
-
27
- == Models
28
-
29
- You don't need to define entity relationships or anything. Your models can just look like this:
30
-
31
- module Food::Models
32
- class Recipe < CouchDocument; end
33
- end
34
-
35
- You can do a bit more if you want:
36
-
37
- module Food::Models
38
- class Recipe < CouchDocument
39
- needs :ingredients
40
- needs :directions
41
- suggests :cost
42
- end
43
- end
44
-
45
- == Helpers
46
-
47
- You define your map & reduce functions - your Couch views - in your Helpers (not entiiiirely working yet)
48
-
49
- module Food::Helpers
50
-
51
- design do
52
- view all_recipes do
53
- map do
54
- def function(doc)
55
- if doc.kind == "recipe"
56
- emit(doc)
57
- end
58
- end
59
-
60
- reduce do
61
- # whatever
62
- end
63
-
64
- end
65
-
66
- view ingredients do
67
- # a different view
68
- end
69
- end
70
- end
71
-
72
- You can then call your views by name in your controllers:
73
-
74
- module Food::Controllers
75
- class Recipes < R '/recipes/'
76
- @recipes = View.all_recipes
77
- render :recipes
78
- end
79
- end
80
-
81
- Views give you back a special JSON hash where you can treat the keys as object attributes and all that:
82
-
83
- module Food::Views
84
- def recipes
85
- recipes.each do |recipe|
86
- h2 recipe.title
87
- recipe.ingredients.each do |ingredient|
88
- p "#{ingredient.name}: #{ingredient.quantity}"
89
- end
90
- end
91
- end
92
- end
93
-
94
- = Map/Reduce
95
-
96
- ShyCouch uses the related ShyRubyJS library to parse Ruby blocks as JavaScript. This means you can do this:
97
-
98
- map do
99
- def function(doc)
100
- if doc.kind == "post" and !doc.hidden
101
- emit(doc)
102
- end
103
- end
104
-
105
- and you'll get this:
106
-
107
- function ( doc ) {
108
- if( doc.kind.==("post") && !doc.hidden ) {
109
- emit(doc)
110
- }
111
- }
112
-
113
- == Copyright
114
-
115
- Copyright (c) 2011 Cerales. See LICENSE.txt for
116
- further details.
117
-
@@ -1,83 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{ShyCouch}
8
- s.version = "0.6.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Shy Inc.}, %q{Daniel Bryan}, %q{Cerales}]
12
- s.date = %q{2011-09-24}
13
- s.description = %q{Ruby API for CouchDB, designed to work with the Camping micro-framework.}
14
- s.email = %q{danbryan@gmail.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE.txt",
17
- "README"
18
- ]
19
- s.files = [
20
- ".document",
21
- "Gemfile",
22
- "Gemfile.lock",
23
- "LICENSE.txt",
24
- "README",
25
- "Rakefile",
26
- "ShyCouch.gemspec",
27
- "VERSION",
28
- "design_notes.rb",
29
- "lib/ShyCouch.rb",
30
- "lib/ShyCouch/data.rb",
31
- "lib/ShyCouch/fields.rb",
32
- "test/helper.rb",
33
- "test/test_ShyCouch.rb",
34
- "test/test_couch_document.rb",
35
- "test/test_couchdb_api.rb",
36
- "test/test_couchdb_factory.rb",
37
- "test/test_design_documents.rb",
38
- "test/test_fields.rb",
39
- "test/test_views.rb"
40
- ]
41
- s.homepage = %q{http://github.com/Cerales/ShyCouch}
42
- s.licenses = [%q{MIT}]
43
- s.require_paths = [%q{lib}]
44
- s.rubygems_version = %q{1.8.6}
45
- s.summary = %q{Ruby API for CouchDB, designed to work with the Camping micro-framework.}
46
-
47
- if s.respond_to? :specification_version then
48
- s.specification_version = 3
49
-
50
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
- s.add_runtime_dependency(%q<ShyRubyJS>, [">= 0"])
52
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
53
- s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
54
- s.add_development_dependency(%q<rcov>, [">= 0"])
55
- s.add_development_dependency(%q<sourcify>, ["~> 0.5.0"])
56
- s.add_development_dependency(%q<ShyRubyJS>, [">= 0"])
57
- s.add_runtime_dependency(%q<ShyRubyJS>, [">= 0"])
58
- s.add_runtime_dependency(%q<rest-client>, [">= 1.6.7"])
59
- s.add_runtime_dependency(%q<sourcify>, [">= 0"])
60
- else
61
- s.add_dependency(%q<ShyRubyJS>, [">= 0"])
62
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
63
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
64
- s.add_dependency(%q<rcov>, [">= 0"])
65
- s.add_dependency(%q<sourcify>, ["~> 0.5.0"])
66
- s.add_dependency(%q<ShyRubyJS>, [">= 0"])
67
- s.add_dependency(%q<ShyRubyJS>, [">= 0"])
68
- s.add_dependency(%q<rest-client>, [">= 1.6.7"])
69
- s.add_dependency(%q<sourcify>, [">= 0"])
70
- end
71
- else
72
- s.add_dependency(%q<ShyRubyJS>, [">= 0"])
73
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
74
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
75
- s.add_dependency(%q<rcov>, [">= 0"])
76
- s.add_dependency(%q<sourcify>, ["~> 0.5.0"])
77
- s.add_dependency(%q<ShyRubyJS>, [">= 0"])
78
- s.add_dependency(%q<ShyRubyJS>, [">= 0"])
79
- s.add_dependency(%q<rest-client>, [">= 1.6.7"])
80
- s.add_dependency(%q<sourcify>, [">= 0"])
81
- end
82
- end
83
-
@@ -1,39 +0,0 @@
1
- # just playing with possible syntax inspired by bluebie's implementation
2
- settings = {blah blah blah}
3
- db = ShyCouch.getDB(settings)
4
-
5
- designs = db.getDesigns #should get a DocumentCollection thing
6
-
7
- # long method of making a design
8
-
9
- #defining a view w/ map
10
- view = ShyCouch::Data::View.new :rocks do
11
- map do
12
- emit(doc.id, null) if doc.kind == "rock"
13
- end
14
- end
15
-
16
- #defining a view w/ reduce
17
- view2 = ShyCouch::Data::View.new :rock_weight_average
18
- map do
19
- emit(doc.id, doc.weight) if doc.kind == "rock"
20
- end
21
- reduce do
22
- # return the average
23
- return sum(values) / values.length
24
- end
25
- end
26
-
27
- #defining a view w/ literal JS instead of parsing
28
-
29
- view3 = ShyCouch::Data::View.new :complicated
30
- view3.map = "function(doc) { emit(doc.id, doc.weirdThing); }"
31
- view3.reduce = "function(key, values, rereduce) { functiondfhs lambda calculs blahalahal; }"
32
-
33
- newDesign = ShyCouch::Data::Design.new
34
- # either:
35
- newDesign << view
36
- newDesign << view2
37
- # or:
38
- newDesign << view,view2
39
- # or both!