brianmario-couchrest 0.23
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/LICENSE +176 -0
- data/README.md +95 -0
- data/Rakefile +75 -0
- data/THANKS.md +18 -0
- data/examples/model/example.rb +144 -0
- data/examples/word_count/markov +38 -0
- data/examples/word_count/views/books/chunked-map.js +3 -0
- data/examples/word_count/views/books/united-map.js +1 -0
- data/examples/word_count/views/markov/chain-map.js +6 -0
- data/examples/word_count/views/markov/chain-reduce.js +7 -0
- data/examples/word_count/views/word_count/count-map.js +6 -0
- data/examples/word_count/views/word_count/count-reduce.js +3 -0
- data/examples/word_count/word_count.rb +46 -0
- data/examples/word_count/word_count_query.rb +40 -0
- data/examples/word_count/word_count_views.rb +26 -0
- data/lib/couchrest.rb +198 -0
- data/lib/couchrest/commands/generate.rb +71 -0
- data/lib/couchrest/commands/push.rb +103 -0
- data/lib/couchrest/core/database.rb +303 -0
- data/lib/couchrest/core/design.rb +79 -0
- data/lib/couchrest/core/document.rb +87 -0
- data/lib/couchrest/core/response.rb +16 -0
- data/lib/couchrest/core/server.rb +88 -0
- data/lib/couchrest/core/view.rb +4 -0
- data/lib/couchrest/helper/pager.rb +103 -0
- data/lib/couchrest/helper/streamer.rb +44 -0
- data/lib/couchrest/helper/upgrade.rb +51 -0
- data/lib/couchrest/mixins.rb +4 -0
- data/lib/couchrest/mixins/attachments.rb +31 -0
- data/lib/couchrest/mixins/callbacks.rb +483 -0
- data/lib/couchrest/mixins/class_proxy.rb +108 -0
- data/lib/couchrest/mixins/design_doc.rb +90 -0
- data/lib/couchrest/mixins/document_queries.rb +44 -0
- data/lib/couchrest/mixins/extended_attachments.rb +68 -0
- data/lib/couchrest/mixins/extended_document_mixins.rb +7 -0
- data/lib/couchrest/mixins/properties.rb +129 -0
- data/lib/couchrest/mixins/validation.rb +242 -0
- data/lib/couchrest/mixins/views.rb +169 -0
- data/lib/couchrest/monkeypatches.rb +113 -0
- data/lib/couchrest/more/casted_model.rb +28 -0
- data/lib/couchrest/more/extended_document.rb +215 -0
- data/lib/couchrest/more/property.rb +40 -0
- data/lib/couchrest/support/blank.rb +42 -0
- data/lib/couchrest/support/class.rb +176 -0
- data/lib/couchrest/validation/auto_validate.rb +163 -0
- data/lib/couchrest/validation/contextual_validators.rb +78 -0
- data/lib/couchrest/validation/validation_errors.rb +118 -0
- data/lib/couchrest/validation/validators/absent_field_validator.rb +74 -0
- data/lib/couchrest/validation/validators/confirmation_validator.rb +99 -0
- data/lib/couchrest/validation/validators/format_validator.rb +117 -0
- data/lib/couchrest/validation/validators/formats/email.rb +66 -0
- data/lib/couchrest/validation/validators/formats/url.rb +43 -0
- data/lib/couchrest/validation/validators/generic_validator.rb +120 -0
- data/lib/couchrest/validation/validators/length_validator.rb +134 -0
- data/lib/couchrest/validation/validators/method_validator.rb +89 -0
- data/lib/couchrest/validation/validators/numeric_validator.rb +104 -0
- data/lib/couchrest/validation/validators/required_field_validator.rb +109 -0
- data/spec/couchrest/core/couchrest_spec.rb +201 -0
- data/spec/couchrest/core/database_spec.rb +699 -0
- data/spec/couchrest/core/design_spec.rb +138 -0
- data/spec/couchrest/core/document_spec.rb +267 -0
- data/spec/couchrest/core/server_spec.rb +35 -0
- data/spec/couchrest/helpers/pager_spec.rb +122 -0
- data/spec/couchrest/helpers/streamer_spec.rb +23 -0
- data/spec/couchrest/more/casted_extended_doc_spec.rb +40 -0
- data/spec/couchrest/more/casted_model_spec.rb +98 -0
- data/spec/couchrest/more/extended_doc_attachment_spec.rb +130 -0
- data/spec/couchrest/more/extended_doc_spec.rb +509 -0
- data/spec/couchrest/more/extended_doc_subclass_spec.rb +98 -0
- data/spec/couchrest/more/extended_doc_view_spec.rb +355 -0
- data/spec/couchrest/more/property_spec.rb +136 -0
- data/spec/fixtures/attachments/README +3 -0
- data/spec/fixtures/attachments/couchdb.png +0 -0
- data/spec/fixtures/attachments/test.html +11 -0
- data/spec/fixtures/more/article.rb +34 -0
- data/spec/fixtures/more/card.rb +20 -0
- data/spec/fixtures/more/course.rb +14 -0
- data/spec/fixtures/more/event.rb +6 -0
- data/spec/fixtures/more/invoice.rb +17 -0
- data/spec/fixtures/more/person.rb +8 -0
- data/spec/fixtures/more/question.rb +6 -0
- data/spec/fixtures/more/service.rb +12 -0
- data/spec/fixtures/views/lib.js +3 -0
- data/spec/fixtures/views/test_view/lib.js +3 -0
- data/spec/fixtures/views/test_view/only-map.js +4 -0
- data/spec/fixtures/views/test_view/test-map.js +3 -0
- data/spec/fixtures/views/test_view/test-reduce.js +3 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +26 -0
- data/utils/remap.rb +27 -0
- data/utils/subset.rb +30 -0
- metadata +200 -0
@@ -0,0 +1,136 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
|
2
|
+
require File.join(FIXTURE_PATH, 'more', 'card')
|
3
|
+
require File.join(FIXTURE_PATH, 'more', 'invoice')
|
4
|
+
require File.join(FIXTURE_PATH, 'more', 'service')
|
5
|
+
require File.join(FIXTURE_PATH, 'more', 'event')
|
6
|
+
|
7
|
+
|
8
|
+
describe "ExtendedDocument properties" do
|
9
|
+
|
10
|
+
before(:each) do
|
11
|
+
reset_test_db!
|
12
|
+
@card = Card.new(:first_name => "matt")
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should be accessible from the object" do
|
16
|
+
@card.properties.should be_an_instance_of(Array)
|
17
|
+
@card.properties.map{|p| p.name}.should include("first_name")
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should let you access a property value (getter)" do
|
21
|
+
@card.first_name.should == "matt"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should let you set a property value (setter)" do
|
25
|
+
@card.last_name = "Aimonetti"
|
26
|
+
@card.last_name.should == "Aimonetti"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should not let you set a property value if it's read only" do
|
30
|
+
lambda{@card.read_only_value = "test"}.should raise_error
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should let you use an alias for an attribute" do
|
34
|
+
@card.last_name = "Aimonetti"
|
35
|
+
@card.family_name.should == "Aimonetti"
|
36
|
+
@card.family_name.should == @card.last_name
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should be auto timestamped" do
|
40
|
+
@card.created_at.should be_nil
|
41
|
+
@card.updated_at.should be_nil
|
42
|
+
@card.save.should be_true
|
43
|
+
@card.created_at.should_not be_nil
|
44
|
+
@card.updated_at.should_not be_nil
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "validation" do
|
48
|
+
before(:each) do
|
49
|
+
@invoice = Invoice.new(:client_name => "matt", :employee_name => "Chris", :location => "San Diego, CA")
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should be able to be validated" do
|
53
|
+
@card.valid?.should == true
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should let you validate the presence of an attribute" do
|
57
|
+
@card.first_name = nil
|
58
|
+
@card.should_not be_valid
|
59
|
+
@card.errors.should_not be_empty
|
60
|
+
@card.errors.on(:first_name).should == ["First name must not be blank"]
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should let you look up errors for a field by a string name" do
|
64
|
+
@card.first_name = nil
|
65
|
+
@card.should_not be_valid
|
66
|
+
@card.errors.on('first_name').should == ["First name must not be blank"]
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should validate the presence of 2 attributes" do
|
70
|
+
@invoice.clear
|
71
|
+
@invoice.should_not be_valid
|
72
|
+
@invoice.errors.should_not be_empty
|
73
|
+
@invoice.errors.on(:client_name).first.should == "Client name must not be blank"
|
74
|
+
@invoice.errors.on(:employee_name).should_not be_empty
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should let you set an error message" do
|
78
|
+
@invoice.location = nil
|
79
|
+
@invoice.valid?
|
80
|
+
@invoice.errors.on(:location).should == ["Hey stupid!, you forgot the location"]
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should validate before saving" do
|
84
|
+
@invoice.location = nil
|
85
|
+
@invoice.should_not be_valid
|
86
|
+
@invoice.save.should be_false
|
87
|
+
@invoice.should be_new_document
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe "autovalidation" do
|
92
|
+
before(:each) do
|
93
|
+
@service = Service.new(:name => "Coumpound analysis", :price => 3_000)
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should be valid" do
|
97
|
+
@service.should be_valid
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should not respond to properties not setup" do
|
101
|
+
@service.respond_to?(:client_name).should be_false
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "property :name, :length => 4...20" do
|
105
|
+
|
106
|
+
it "should autovalidate the presence when length is set" do
|
107
|
+
@service.name = nil
|
108
|
+
@service.should_not be_valid
|
109
|
+
@service.errors.should_not be_nil
|
110
|
+
@service.errors.on(:name).first.should == "Name must be between 4 and 19 characters long"
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should autovalidate the correct length" do
|
114
|
+
@service.name = "a"
|
115
|
+
@service.should_not be_valid
|
116
|
+
@service.errors.should_not be_nil
|
117
|
+
@service.errors.on(:name).first.should == "Name must be between 4 and 19 characters long"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
describe "casting" do
|
123
|
+
describe "cast keys to any type" do
|
124
|
+
before(:all) do
|
125
|
+
event_doc = { :subject => "Some event", :occurs_at => Time.now }
|
126
|
+
e = Event.database.save_doc event_doc
|
127
|
+
|
128
|
+
@event = Event.get e['id']
|
129
|
+
end
|
130
|
+
it "should cast created_at to Time" do
|
131
|
+
@event['occurs_at'].should be_an_instance_of(Time)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
Binary file
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class Article < CouchRest::ExtendedDocument
|
2
|
+
use_database TEST_SERVER.default_database
|
3
|
+
unique_id :slug
|
4
|
+
|
5
|
+
view_by :date, :descending => true
|
6
|
+
view_by :user_id, :date
|
7
|
+
|
8
|
+
view_by :tags,
|
9
|
+
:map =>
|
10
|
+
"function(doc) {
|
11
|
+
if (doc['couchrest-type'] == 'Article' && doc.tags) {
|
12
|
+
doc.tags.forEach(function(tag){
|
13
|
+
emit(tag, 1);
|
14
|
+
});
|
15
|
+
}
|
16
|
+
}",
|
17
|
+
:reduce =>
|
18
|
+
"function(keys, values, rereduce) {
|
19
|
+
return sum(values);
|
20
|
+
}"
|
21
|
+
|
22
|
+
property :date
|
23
|
+
property :slug, :read_only => true
|
24
|
+
property :title
|
25
|
+
property :tags
|
26
|
+
|
27
|
+
timestamps!
|
28
|
+
|
29
|
+
save_callback :before, :generate_slug_from_title
|
30
|
+
|
31
|
+
def generate_slug_from_title
|
32
|
+
self['slug'] = title.downcase.gsub(/[^a-z0-9]/,'-').squeeze('-').gsub(/^\-|\-$/,'') if new_document?
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class Card < CouchRest::ExtendedDocument
|
2
|
+
# Include the validation module to get access to the validation methods
|
3
|
+
include CouchRest::Validation
|
4
|
+
# set the auto_validation before defining the properties
|
5
|
+
auto_validate!
|
6
|
+
|
7
|
+
# Set the default database to use
|
8
|
+
use_database TEST_SERVER.default_database
|
9
|
+
|
10
|
+
# Official Schema
|
11
|
+
property :first_name
|
12
|
+
property :last_name, :alias => :family_name
|
13
|
+
property :read_only_value, :read_only => true
|
14
|
+
|
15
|
+
timestamps!
|
16
|
+
|
17
|
+
# Validation
|
18
|
+
validates_present :first_name
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.join(FIXTURE_PATH, 'more', 'question')
|
2
|
+
require File.join(FIXTURE_PATH, 'more', 'person')
|
3
|
+
|
4
|
+
class Course < CouchRest::ExtendedDocument
|
5
|
+
use_database TEST_SERVER.default_database
|
6
|
+
|
7
|
+
property :title
|
8
|
+
property :questions, :cast_as => ['Question']
|
9
|
+
property :professor, :cast_as => 'Person'
|
10
|
+
property :final_test_at, :cast_as => 'Time'
|
11
|
+
|
12
|
+
view_by :title
|
13
|
+
view_by :dept, :ducktype => true
|
14
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Invoice < CouchRest::ExtendedDocument
|
2
|
+
# Include the validation module to get access to the validation methods
|
3
|
+
include CouchRest::Validation
|
4
|
+
|
5
|
+
# Set the default database to use
|
6
|
+
use_database TEST_SERVER.default_database
|
7
|
+
|
8
|
+
# Official Schema
|
9
|
+
property :client_name
|
10
|
+
property :employee_name
|
11
|
+
property :location
|
12
|
+
|
13
|
+
# Validation
|
14
|
+
validates_present :client_name, :employee_name
|
15
|
+
validates_present :location, :message => "Hey stupid!, you forgot the location"
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Service < CouchRest::ExtendedDocument
|
2
|
+
# Include the validation module to get access to the validation methods
|
3
|
+
include CouchRest::Validation
|
4
|
+
auto_validate!
|
5
|
+
# Set the default database to use
|
6
|
+
use_database TEST_SERVER.default_database
|
7
|
+
|
8
|
+
# Official Schema
|
9
|
+
property :name, :length => 4...20
|
10
|
+
property :price, :type => Integer
|
11
|
+
|
12
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "spec" # Satisfies Autotest and anyone else not using the Rake tasks
|
3
|
+
|
4
|
+
require File.join(File.dirname(__FILE__), '..','lib','couchrest')
|
5
|
+
# check the following file to see how to use the spec'd features.
|
6
|
+
|
7
|
+
unless defined?(FIXTURE_PATH)
|
8
|
+
FIXTURE_PATH = File.join(File.dirname(__FILE__), '/fixtures')
|
9
|
+
SCRATCH_PATH = File.join(File.dirname(__FILE__), '/tmp')
|
10
|
+
|
11
|
+
COUCHHOST = "http://127.0.0.1:5984"
|
12
|
+
TESTDB = 'couchrest-test'
|
13
|
+
TEST_SERVER = CouchRest.new
|
14
|
+
TEST_SERVER.default_database = TESTDB
|
15
|
+
end
|
16
|
+
|
17
|
+
class Basic < CouchRest::ExtendedDocument
|
18
|
+
use_database TEST_SERVER.default_database
|
19
|
+
end
|
20
|
+
|
21
|
+
def reset_test_db!
|
22
|
+
cr = TEST_SERVER
|
23
|
+
db = cr.database(TESTDB)
|
24
|
+
db.recreate! rescue nil
|
25
|
+
db
|
26
|
+
end
|
data/utils/remap.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'couchrest'
|
3
|
+
|
4
|
+
# set the source db and map view
|
5
|
+
source = CouchRest.new("http://127.0.0.1:5984").database('source-db')
|
6
|
+
source_view = 'mydesign/view-map'
|
7
|
+
|
8
|
+
# set the target db
|
9
|
+
target = CouchRest.new("http://127.0.0.1:5984").database('target-db')
|
10
|
+
|
11
|
+
|
12
|
+
pager = CouchRest::Pager.new(source)
|
13
|
+
|
14
|
+
# pager will yield once per uniq key in the source view
|
15
|
+
|
16
|
+
pager.key_reduce(source_view, 10000) do |key, values|
|
17
|
+
# create a doc from the key and the values
|
18
|
+
example_doc = {
|
19
|
+
:key => key,
|
20
|
+
:values => values.uniq
|
21
|
+
}
|
22
|
+
|
23
|
+
target.save(example_doc)
|
24
|
+
|
25
|
+
# keep us up to date with progress
|
26
|
+
puts k if (rand > 0.9)
|
27
|
+
end
|
data/utils/subset.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'couchrest'
|
3
|
+
|
4
|
+
# subset.rb replicates a percentage of a database to a fresh database.
|
5
|
+
# use it to create a smaller dataset on which to prototype views.
|
6
|
+
|
7
|
+
# specify the source database
|
8
|
+
source = CouchRest.new("http://127.0.0.1:5984").database('source-db')
|
9
|
+
|
10
|
+
# specify the target database
|
11
|
+
target = CouchRest.new("http://127.0.0.1:5984").database('target-db')
|
12
|
+
|
13
|
+
# pager efficiently yields all view rows
|
14
|
+
pager = CouchRest::Pager.new(source)
|
15
|
+
|
16
|
+
pager.all_docs(1000) do |rows|
|
17
|
+
docs = rows.collect do |r|
|
18
|
+
# the percentage of docs to clone
|
19
|
+
next if rand > 0.1
|
20
|
+
doc = source.get(r['id'])
|
21
|
+
doc.delete('_rev')
|
22
|
+
doc
|
23
|
+
end.compact
|
24
|
+
puts docs.length
|
25
|
+
next if docs.empty?
|
26
|
+
|
27
|
+
puts docs.first['_id']
|
28
|
+
target.bulk_save(docs)
|
29
|
+
end
|
30
|
+
|
metadata
ADDED
@@ -0,0 +1,200 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: brianmario-couchrest
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: "0.23"
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- J. Chris Anderson
|
8
|
+
- Matt Aimonetti
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2008-11-22 00:00:00 -08:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: yajl-ruby
|
18
|
+
type: :runtime
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 0.5.5
|
25
|
+
version:
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rest-client
|
28
|
+
type: :runtime
|
29
|
+
version_requirement:
|
30
|
+
version_requirements: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "0.5"
|
35
|
+
version:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: mime-types
|
38
|
+
type: :runtime
|
39
|
+
version_requirement:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: "1.15"
|
45
|
+
version:
|
46
|
+
description: CouchRest provides a simple interface on top of CouchDB's RESTful HTTP API, as well as including some utility scripts for managing views and attachments.
|
47
|
+
email: jchris@apache.org
|
48
|
+
executables: []
|
49
|
+
|
50
|
+
extensions: []
|
51
|
+
|
52
|
+
extra_rdoc_files:
|
53
|
+
- README.md
|
54
|
+
- LICENSE
|
55
|
+
- THANKS.md
|
56
|
+
files:
|
57
|
+
- LICENSE
|
58
|
+
- README.md
|
59
|
+
- Rakefile
|
60
|
+
- THANKS.md
|
61
|
+
- examples/model
|
62
|
+
- examples/model/example.rb
|
63
|
+
- examples/word_count
|
64
|
+
- examples/word_count/markov
|
65
|
+
- examples/word_count/views
|
66
|
+
- examples/word_count/views/books
|
67
|
+
- examples/word_count/views/books/chunked-map.js
|
68
|
+
- examples/word_count/views/books/united-map.js
|
69
|
+
- examples/word_count/views/markov
|
70
|
+
- examples/word_count/views/markov/chain-map.js
|
71
|
+
- examples/word_count/views/markov/chain-reduce.js
|
72
|
+
- examples/word_count/views/word_count
|
73
|
+
- examples/word_count/views/word_count/count-map.js
|
74
|
+
- examples/word_count/views/word_count/count-reduce.js
|
75
|
+
- examples/word_count/word_count.rb
|
76
|
+
- examples/word_count/word_count_query.rb
|
77
|
+
- examples/word_count/word_count_views.rb
|
78
|
+
- lib/couchrest
|
79
|
+
- lib/couchrest/commands
|
80
|
+
- lib/couchrest/commands/generate.rb
|
81
|
+
- lib/couchrest/commands/push.rb
|
82
|
+
- lib/couchrest/core
|
83
|
+
- lib/couchrest/core/database.rb
|
84
|
+
- lib/couchrest/core/design.rb
|
85
|
+
- lib/couchrest/core/document.rb
|
86
|
+
- lib/couchrest/core/response.rb
|
87
|
+
- lib/couchrest/core/server.rb
|
88
|
+
- lib/couchrest/core/view.rb
|
89
|
+
- lib/couchrest/helper
|
90
|
+
- lib/couchrest/helper/pager.rb
|
91
|
+
- lib/couchrest/helper/streamer.rb
|
92
|
+
- lib/couchrest/helper/upgrade.rb
|
93
|
+
- lib/couchrest/mixins
|
94
|
+
- lib/couchrest/mixins/attachments.rb
|
95
|
+
- lib/couchrest/mixins/callbacks.rb
|
96
|
+
- lib/couchrest/mixins/class_proxy.rb
|
97
|
+
- lib/couchrest/mixins/design_doc.rb
|
98
|
+
- lib/couchrest/mixins/document_queries.rb
|
99
|
+
- lib/couchrest/mixins/extended_attachments.rb
|
100
|
+
- lib/couchrest/mixins/extended_document_mixins.rb
|
101
|
+
- lib/couchrest/mixins/properties.rb
|
102
|
+
- lib/couchrest/mixins/validation.rb
|
103
|
+
- lib/couchrest/mixins/views.rb
|
104
|
+
- lib/couchrest/mixins.rb
|
105
|
+
- lib/couchrest/monkeypatches.rb
|
106
|
+
- lib/couchrest/more
|
107
|
+
- lib/couchrest/more/casted_model.rb
|
108
|
+
- lib/couchrest/more/extended_document.rb
|
109
|
+
- lib/couchrest/more/property.rb
|
110
|
+
- lib/couchrest/support
|
111
|
+
- lib/couchrest/support/blank.rb
|
112
|
+
- lib/couchrest/support/class.rb
|
113
|
+
- lib/couchrest/validation
|
114
|
+
- lib/couchrest/validation/auto_validate.rb
|
115
|
+
- lib/couchrest/validation/contextual_validators.rb
|
116
|
+
- lib/couchrest/validation/validation_errors.rb
|
117
|
+
- lib/couchrest/validation/validators
|
118
|
+
- lib/couchrest/validation/validators/absent_field_validator.rb
|
119
|
+
- lib/couchrest/validation/validators/confirmation_validator.rb
|
120
|
+
- lib/couchrest/validation/validators/format_validator.rb
|
121
|
+
- lib/couchrest/validation/validators/formats
|
122
|
+
- lib/couchrest/validation/validators/formats/email.rb
|
123
|
+
- lib/couchrest/validation/validators/formats/url.rb
|
124
|
+
- lib/couchrest/validation/validators/generic_validator.rb
|
125
|
+
- lib/couchrest/validation/validators/length_validator.rb
|
126
|
+
- lib/couchrest/validation/validators/method_validator.rb
|
127
|
+
- lib/couchrest/validation/validators/numeric_validator.rb
|
128
|
+
- lib/couchrest/validation/validators/required_field_validator.rb
|
129
|
+
- lib/couchrest.rb
|
130
|
+
- spec/couchrest
|
131
|
+
- spec/couchrest/core
|
132
|
+
- spec/couchrest/core/couchrest_spec.rb
|
133
|
+
- spec/couchrest/core/database_spec.rb
|
134
|
+
- spec/couchrest/core/design_spec.rb
|
135
|
+
- spec/couchrest/core/document_spec.rb
|
136
|
+
- spec/couchrest/core/server_spec.rb
|
137
|
+
- spec/couchrest/helpers
|
138
|
+
- spec/couchrest/helpers/pager_spec.rb
|
139
|
+
- spec/couchrest/helpers/streamer_spec.rb
|
140
|
+
- spec/couchrest/more
|
141
|
+
- spec/couchrest/more/casted_extended_doc_spec.rb
|
142
|
+
- spec/couchrest/more/casted_model_spec.rb
|
143
|
+
- spec/couchrest/more/extended_doc_attachment_spec.rb
|
144
|
+
- spec/couchrest/more/extended_doc_spec.rb
|
145
|
+
- spec/couchrest/more/extended_doc_subclass_spec.rb
|
146
|
+
- spec/couchrest/more/extended_doc_view_spec.rb
|
147
|
+
- spec/couchrest/more/property_spec.rb
|
148
|
+
- spec/fixtures
|
149
|
+
- spec/fixtures/attachments
|
150
|
+
- spec/fixtures/attachments/couchdb.png
|
151
|
+
- spec/fixtures/attachments/README
|
152
|
+
- spec/fixtures/attachments/test.html
|
153
|
+
- spec/fixtures/more
|
154
|
+
- spec/fixtures/more/article.rb
|
155
|
+
- spec/fixtures/more/card.rb
|
156
|
+
- spec/fixtures/more/course.rb
|
157
|
+
- spec/fixtures/more/event.rb
|
158
|
+
- spec/fixtures/more/invoice.rb
|
159
|
+
- spec/fixtures/more/person.rb
|
160
|
+
- spec/fixtures/more/question.rb
|
161
|
+
- spec/fixtures/more/service.rb
|
162
|
+
- spec/fixtures/views
|
163
|
+
- spec/fixtures/views/lib.js
|
164
|
+
- spec/fixtures/views/test_view
|
165
|
+
- spec/fixtures/views/test_view/lib.js
|
166
|
+
- spec/fixtures/views/test_view/only-map.js
|
167
|
+
- spec/fixtures/views/test_view/test-map.js
|
168
|
+
- spec/fixtures/views/test_view/test-reduce.js
|
169
|
+
- spec/spec.opts
|
170
|
+
- spec/spec_helper.rb
|
171
|
+
- utils/remap.rb
|
172
|
+
- utils/subset.rb
|
173
|
+
has_rdoc: true
|
174
|
+
homepage: http://github.com/jchris/couchrest
|
175
|
+
post_install_message:
|
176
|
+
rdoc_options: []
|
177
|
+
|
178
|
+
require_paths:
|
179
|
+
- lib
|
180
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: "0"
|
185
|
+
version:
|
186
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
|
+
requirements:
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: "0"
|
191
|
+
version:
|
192
|
+
requirements: []
|
193
|
+
|
194
|
+
rubyforge_project:
|
195
|
+
rubygems_version: 1.2.0
|
196
|
+
signing_key:
|
197
|
+
specification_version: 2
|
198
|
+
summary: Lean and RESTful interface to CouchDB.
|
199
|
+
test_files: []
|
200
|
+
|