relaxdb 0.3.5 → 0.5
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.textile +21 -23
- data/Rakefile +2 -7
- data/docs/spec_results.html +5 -5
- data/lib/more/grapher.rb +1 -1
- data/lib/relaxdb.rb +3 -5
- data/lib/relaxdb/all_delegator.rb +19 -13
- data/lib/relaxdb/document.rb +150 -218
- data/lib/relaxdb/extlib.rb +7 -1
- data/lib/relaxdb/migration.rb +11 -8
- data/lib/relaxdb/net_http_server.rb +19 -1
- data/lib/relaxdb/paginator.rb +30 -11
- data/lib/relaxdb/query.rb +1 -1
- data/lib/relaxdb/{belongs_to_proxy.rb → references_proxy.rb} +3 -3
- data/lib/relaxdb/relaxdb.rb +87 -7
- data/lib/relaxdb/server.rb +8 -2
- data/lib/relaxdb/taf2_curb_server.rb +2 -1
- data/lib/relaxdb/uuid_generator.rb +38 -2
- data/lib/relaxdb/view_by_delegator.rb +34 -0
- data/lib/relaxdb/view_object.rb +1 -1
- data/lib/relaxdb/view_uploader.rb +16 -2
- data/lib/relaxdb/views.rb +23 -55
- data/readme.rb +3 -3
- data/spec/all_delegator_spec.rb +52 -0
- data/spec/callbacks_spec.rb +4 -4
- data/spec/derived_properties_spec.rb +4 -4
- data/spec/design_doc_spec.rb +2 -2
- data/spec/doc_inheritable_spec.rb +2 -2
- data/spec/document_spec.rb +47 -25
- data/spec/migration_spec.rb +12 -10
- data/spec/qpaginate_spec.rb +88 -0
- data/spec/query_spec.rb +2 -2
- data/spec/references_proxy_spec.rb +94 -0
- data/spec/relaxdb_spec.rb +29 -21
- data/spec/server_spec.rb +4 -3
- data/spec/spec_helper.rb +1 -0
- data/spec/spec_models.rb +48 -57
- data/spec/uuid_generator_spec.rb +34 -0
- data/spec/view_by_spec.rb +62 -54
- data/spec/view_docs_by_spec.rb +85 -0
- metadata +38 -27
- data/lib/more/atomic_bulk_save_support.rb +0 -18
- data/lib/relaxdb/has_many_proxy.rb +0 -101
- data/lib/relaxdb/has_one_proxy.rb +0 -42
- data/lib/relaxdb/references_many_proxy.rb +0 -97
- data/spec/belongs_to_spec.rb +0 -124
- data/spec/has_many_spec.rb +0 -202
- data/spec/has_one_spec.rb +0 -123
- data/spec/references_many_spec.rb +0 -173
- data/spec/view_spec.rb +0 -23
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
require File.dirname(__FILE__) + '/spec_models.rb'
|
3
|
+
|
4
|
+
describe RelaxDB::UuidGenerator do
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
setup_test_db
|
8
|
+
@ug = RelaxDB::UuidGenerator
|
9
|
+
end
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
@ug.reset
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should retrieve UUIDs from CouchDB" do
|
16
|
+
RelaxDB.db.reset_req_count
|
17
|
+
@ug.uuid
|
18
|
+
RelaxDB.db.get_count.should == 1
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should retrieve count number of UUIDs" do
|
22
|
+
RelaxDB.db.reset_req_count
|
23
|
+
@ug.count = 1
|
24
|
+
3.times { @ug.uuid }
|
25
|
+
RelaxDB.db.get_count.should == 3
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should retrieve n UUIDs from CouchDB in a single request" do
|
29
|
+
RelaxDB.db.reset_req_count
|
30
|
+
100.times { @ug.uuid }
|
31
|
+
RelaxDB.db.get_count.should == 1
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
data/spec/view_by_spec.rb
CHANGED
@@ -3,74 +3,82 @@ require File.dirname(__FILE__) + '/spec_models.rb'
|
|
3
3
|
|
4
4
|
describe "view_by" do
|
5
5
|
|
6
|
-
before(:
|
7
|
-
|
6
|
+
before(:each) do
|
7
|
+
setup_test_db
|
8
|
+
|
9
|
+
docs = (1..10).map { |i| Primitives.new :_id => "id#{i}", :str => i.to_s }
|
10
|
+
RelaxDB.bulk_save! *docs
|
8
11
|
end
|
9
12
|
|
10
|
-
|
13
|
+
it "should return an array of doc ids for a key" do
|
14
|
+
docs = Primitives.by_str :key => "5"
|
15
|
+
docs.first.should == "id5"
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should obey startkey and endkey directives" do
|
19
|
+
docs = Primitives.by_str :startkey => "3", :endkey => "6"
|
20
|
+
docs.should == %w(id3 id4 id5 id6)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return all when none specified" do
|
24
|
+
docs = Primitives.by_str
|
25
|
+
docs.size.should == 10
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return arrays that behave normally" do
|
29
|
+
p1 = Primitives.by_str :key => "1"
|
30
|
+
p2 = Primitives.by_str :key => "2"
|
31
|
+
RelaxDB.load!(p1 + p2).map { |p| p.str }.join.should == "12"
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "delegator" do
|
11
35
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
RelaxDB.enable_view_creation
|
16
|
-
|
17
|
-
class ViewByFoo < RelaxDB::Document
|
18
|
-
property :foo
|
19
|
-
view_by :foo, :descending => true
|
20
|
-
end
|
21
|
-
|
36
|
+
it "should load the returned doc ids" do
|
37
|
+
docs = Primitives.by_str :key => "5"
|
38
|
+
docs.load!.first.str.should == "5"
|
22
39
|
end
|
23
40
|
|
24
|
-
it "should
|
25
|
-
|
26
|
-
|
41
|
+
it "should load the doc for a single param" do
|
42
|
+
res = Primitives.by_str "8"
|
43
|
+
res.str.should == "8"
|
27
44
|
end
|
28
|
-
|
29
|
-
it "should
|
30
|
-
|
31
|
-
|
32
|
-
res.first.foo.should == "bar"
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should create a paginate_by_ att list method" do
|
36
|
-
ViewByFoo.new(:foo => :bar).save!
|
37
|
-
res = ViewByFoo.paginate_by_foo :page_params => {}, :startkey => {}, :endkey => nil
|
38
|
-
res.first.foo.should == "bar"
|
45
|
+
|
46
|
+
it "should return the delegator when no params given" do
|
47
|
+
docs = Primitives.by_str.load!
|
48
|
+
docs.map { |d| d.str }.join.length.should == 11
|
39
49
|
end
|
40
50
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
ViewByFoo.by_foo.map{ |o| o.foo }.should == ["b", "a"]
|
46
|
-
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "request count" do
|
47
54
|
|
48
|
-
|
49
|
-
|
50
|
-
ViewByFoo.by_foo("a").should == vbf
|
55
|
+
before(:each) do
|
56
|
+
RelaxDB.db.reset_req_count
|
51
57
|
end
|
52
58
|
|
53
|
-
it "should
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
res = ViewByFoo.paginate_by_foo :page_params => {}, :startkey => {}, :endkey => nil
|
58
|
-
res.map{ |o| o.foo }.should == ["b", "a"]
|
59
|
+
it "should not issue any requests before accessingn the delegator" do
|
60
|
+
doc_ids = Primitives.by_str
|
61
|
+
RelaxDB.db.req_count.should == 0
|
59
62
|
end
|
60
|
-
|
61
|
-
it "should
|
62
|
-
|
63
|
-
|
64
|
-
|
63
|
+
|
64
|
+
it "should issue a single request when retrieving ids only" do
|
65
|
+
doc_ids = Primitives.by_str
|
66
|
+
doc_ids[0]
|
67
|
+
RelaxDB.db.req_count.should == 1
|
65
68
|
end
|
66
69
|
|
67
|
-
it "should
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
70
|
+
it "should make two requests when loading docs after touching ids" do
|
71
|
+
doc_ids = Primitives.by_str
|
72
|
+
doc_ids[0].should == "id1"
|
73
|
+
doc_ids.load!
|
74
|
+
RelaxDB.db.req_count.should == 2
|
72
75
|
end
|
73
|
-
|
76
|
+
|
77
|
+
it "should issue a single request when retrieving docs directly" do
|
78
|
+
Primitives.by_str.load!
|
79
|
+
RelaxDB.db.req_count.should == 1
|
80
|
+
end
|
81
|
+
|
74
82
|
end
|
75
83
|
|
76
|
-
end
|
84
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
require File.dirname(__FILE__) + '/spec_models.rb'
|
3
|
+
|
4
|
+
describe "view_docs_by" do
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
RelaxDB.configure :host => "localhost", :port => 5984, :design_doc => "spec_doc"
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "view_docs_by" do
|
11
|
+
|
12
|
+
before(:each) do
|
13
|
+
RelaxDB.delete_db "relaxdb_spec" rescue "ok"
|
14
|
+
RelaxDB.use_db "relaxdb_spec"
|
15
|
+
RelaxDB.enable_view_creation
|
16
|
+
|
17
|
+
class ::ViewByFoo < RelaxDB::Document
|
18
|
+
property :foo
|
19
|
+
view_docs_by :foo, :descending => true
|
20
|
+
end
|
21
|
+
|
22
|
+
RelaxDB::View.design_doc.save
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should create corresponding views" do
|
27
|
+
dd = RelaxDB::DesignDocument.get "spec_doc"
|
28
|
+
dd.data["views"]["ViewByFoo_by_foo"].should be
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should create a by_ att list method" do
|
32
|
+
ViewByFoo.new(:foo => :bar).save!
|
33
|
+
res = ViewByFoo.by_foo
|
34
|
+
res.first.foo.should == "bar"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should create a paginate_by_ att list method" do
|
38
|
+
ViewByFoo.new(:foo => :bar).save!
|
39
|
+
res = ViewByFoo.paginate_by_foo :page_params => {}, :startkey => {}, :endkey => nil
|
40
|
+
res.first.foo.should == "bar"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should apply query defaults to by_" do
|
44
|
+
ViewByFoo.new(:foo => "a").save!
|
45
|
+
ViewByFoo.new(:foo => "b").save!
|
46
|
+
|
47
|
+
ViewByFoo.by_foo.map{ |o| o.foo }.should == ["b", "a"]
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should return the right count size" do
|
51
|
+
docs = (1..101).map { |i| ViewByFoo.new :foo => i }
|
52
|
+
RelaxDB.bulk_save! *docs
|
53
|
+
count = RelaxDB.view "ViewByFoo_by_foo", :reduce => true
|
54
|
+
count.should == 101
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should allow a single arg to be passed to by_" do
|
58
|
+
vbf = ViewByFoo.new(:foo => "a").save!
|
59
|
+
ViewByFoo.by_foo("a").should == vbf
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should apply query defaults to paginate_by_" do
|
63
|
+
ViewByFoo.new(:foo => "a").save!
|
64
|
+
ViewByFoo.new(:foo => "b").save!
|
65
|
+
|
66
|
+
res = ViewByFoo.paginate_by_foo :page_params => {}, :startkey => {}, :endkey => nil
|
67
|
+
res.map{ |o| o.foo }.should == ["b", "a"]
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should allow query defaults to be overridden for paginate_by_" do
|
71
|
+
ViewByFoo.new(:foo => :bar).save!
|
72
|
+
res = ViewByFoo.paginate_by_foo :page_params => {}, :startkey => nil, :endkey => {}, :descending => false
|
73
|
+
res.first.foo.should == "bar"
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should allow query defaults to be overridden for by_" do
|
77
|
+
ViewByFoo.new(:foo => "a").save!
|
78
|
+
ViewByFoo.new(:foo => "b").save!
|
79
|
+
|
80
|
+
ViewByFoo.by_foo(:descending => false).map{ |o| o.foo }.should == ["a", "b"]
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaxdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 5
|
8
|
+
version: "0.5"
|
5
9
|
platform: ruby
|
6
10
|
authors:
|
7
11
|
- Paul Carey
|
@@ -9,39 +13,47 @@ autorequire: relaxdb
|
|
9
13
|
bindir: bin
|
10
14
|
cert_chain: []
|
11
15
|
|
12
|
-
date:
|
16
|
+
date: 2010-04-27 00:00:00 +01:00
|
13
17
|
default_executable:
|
14
18
|
dependencies:
|
15
19
|
- !ruby/object:Gem::Dependency
|
16
20
|
name: extlib
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
prerelease: false
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
23
|
requirements:
|
21
24
|
- - ">="
|
22
25
|
- !ruby/object:Gem::Version
|
26
|
+
segments:
|
27
|
+
- 0
|
28
|
+
- 9
|
29
|
+
- 4
|
23
30
|
version: 0.9.4
|
24
|
-
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
25
33
|
- !ruby/object:Gem::Dependency
|
26
34
|
name: json
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
37
|
requirements:
|
31
38
|
- - ">="
|
32
39
|
- !ruby/object:Gem::Version
|
40
|
+
segments:
|
41
|
+
- 0
|
33
42
|
version: "0"
|
34
|
-
|
43
|
+
type: :runtime
|
44
|
+
version_requirements: *id002
|
35
45
|
- !ruby/object:Gem::Dependency
|
36
46
|
name: uuid
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
prerelease: false
|
48
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
49
|
requirements:
|
41
50
|
- - ">="
|
42
51
|
- !ruby/object:Gem::Version
|
52
|
+
segments:
|
53
|
+
- 0
|
43
54
|
version: "0"
|
44
|
-
|
55
|
+
type: :runtime
|
56
|
+
version_requirements: *id003
|
45
57
|
description: RelaxDB provides a simple interface to CouchDB
|
46
58
|
email: paul.p.carey@gmail.com
|
47
59
|
executables: []
|
@@ -57,54 +69,51 @@ files:
|
|
57
69
|
- readme.rb
|
58
70
|
- Rakefile
|
59
71
|
- docs/spec_results.html
|
60
|
-
- lib/more/atomic_bulk_save_support.rb
|
61
72
|
- lib/more/grapher.rb
|
62
73
|
- lib/relaxdb/all_delegator.rb
|
63
|
-
- lib/relaxdb/belongs_to_proxy.rb
|
64
74
|
- lib/relaxdb/design_doc.rb
|
65
75
|
- lib/relaxdb/document.rb
|
66
76
|
- lib/relaxdb/extlib.rb
|
67
|
-
- lib/relaxdb/has_many_proxy.rb
|
68
|
-
- lib/relaxdb/has_one_proxy.rb
|
69
77
|
- lib/relaxdb/migration.rb
|
70
78
|
- lib/relaxdb/migration_version.rb
|
71
79
|
- lib/relaxdb/net_http_server.rb
|
72
80
|
- lib/relaxdb/paginate_params.rb
|
73
81
|
- lib/relaxdb/paginator.rb
|
74
82
|
- lib/relaxdb/query.rb
|
75
|
-
- lib/relaxdb/
|
83
|
+
- lib/relaxdb/references_proxy.rb
|
76
84
|
- lib/relaxdb/relaxdb.rb
|
77
85
|
- lib/relaxdb/server.rb
|
78
86
|
- lib/relaxdb/taf2_curb_server.rb
|
79
87
|
- lib/relaxdb/uuid_generator.rb
|
80
88
|
- lib/relaxdb/validators.rb
|
89
|
+
- lib/relaxdb/view_by_delegator.rb
|
81
90
|
- lib/relaxdb/view_object.rb
|
82
91
|
- lib/relaxdb/view_result.rb
|
83
92
|
- lib/relaxdb/view_uploader.rb
|
84
93
|
- lib/relaxdb/views.rb
|
85
94
|
- lib/relaxdb.rb
|
86
|
-
- spec/
|
95
|
+
- spec/all_delegator_spec.rb
|
87
96
|
- spec/callbacks_spec.rb
|
88
97
|
- spec/derived_properties_spec.rb
|
89
98
|
- spec/design_doc_spec.rb
|
90
99
|
- spec/doc_inheritable_spec.rb
|
91
100
|
- spec/document_spec.rb
|
92
|
-
- spec/has_many_spec.rb
|
93
|
-
- spec/has_one_spec.rb
|
94
101
|
- spec/migration_spec.rb
|
95
102
|
- spec/migration_version_spec.rb
|
96
103
|
- spec/paginate_params_spec.rb
|
97
104
|
- spec/paginate_spec.rb
|
105
|
+
- spec/qpaginate_spec.rb
|
98
106
|
- spec/query_spec.rb
|
99
|
-
- spec/
|
107
|
+
- spec/references_proxy_spec.rb
|
100
108
|
- spec/relaxdb_spec.rb
|
101
109
|
- spec/server_spec.rb
|
102
110
|
- spec/spec.opts
|
103
111
|
- spec/spec_helper.rb
|
104
112
|
- spec/spec_models.rb
|
113
|
+
- spec/uuid_generator_spec.rb
|
105
114
|
- spec/view_by_spec.rb
|
115
|
+
- spec/view_docs_by_spec.rb
|
106
116
|
- spec/view_object_spec.rb
|
107
|
-
- spec/view_spec.rb
|
108
117
|
has_rdoc: true
|
109
118
|
homepage: http://github.com/paulcarey/relaxdb/
|
110
119
|
licenses: []
|
@@ -118,18 +127,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
118
127
|
requirements:
|
119
128
|
- - ">="
|
120
129
|
- !ruby/object:Gem::Version
|
130
|
+
segments:
|
131
|
+
- 0
|
121
132
|
version: "0"
|
122
|
-
version:
|
123
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
134
|
requirements:
|
125
135
|
- - ">="
|
126
136
|
- !ruby/object:Gem::Version
|
137
|
+
segments:
|
138
|
+
- 0
|
127
139
|
version: "0"
|
128
|
-
version:
|
129
140
|
requirements: []
|
130
141
|
|
131
142
|
rubyforge_project:
|
132
|
-
rubygems_version: 1.3.
|
143
|
+
rubygems_version: 1.3.6
|
133
144
|
signing_key:
|
134
145
|
specification_version: 3
|
135
146
|
summary: RelaxDB provides a simple interface to CouchDB
|
@@ -1,18 +0,0 @@
|
|
1
|
-
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
2
|
-
require 'relaxdb'
|
3
|
-
require File.dirname(__FILE__) + '/../../spec/spec_models.rb'
|
4
|
-
|
5
|
-
RelaxDB.configure :host => "localhost", :port => 5984
|
6
|
-
RelaxDB.delete_db "relaxdb_spec" rescue :ok
|
7
|
-
RelaxDB.use_db "relaxdb_spec"
|
8
|
-
|
9
|
-
a1 = Atom.new.save!
|
10
|
-
a1_dup = a1.dup
|
11
|
-
a1.save!
|
12
|
-
begin
|
13
|
-
RelaxDB.bulk_save! a1_dup
|
14
|
-
puts "Atomic bulk_save _not_ supported"
|
15
|
-
rescue RelaxDB::UpdateConflict
|
16
|
-
puts "Atomic bulk_save supported"
|
17
|
-
end
|
18
|
-
|
@@ -1,101 +0,0 @@
|
|
1
|
-
module RelaxDB
|
2
|
-
|
3
|
-
class HasManyProxy
|
4
|
-
|
5
|
-
include Enumerable
|
6
|
-
|
7
|
-
attr_reader :children
|
8
|
-
|
9
|
-
def initialize(client, relationship, opts)
|
10
|
-
@client = client
|
11
|
-
@relationship = relationship
|
12
|
-
@opts = opts
|
13
|
-
|
14
|
-
@target_class = opts[:class]
|
15
|
-
@relationship_as_viewed_by_target = (opts[:known_as] || client.class.name.snake_case).to_s
|
16
|
-
|
17
|
-
@children = load_children
|
18
|
-
end
|
19
|
-
|
20
|
-
def <<(obj)
|
21
|
-
return false if @children.include?(obj)
|
22
|
-
|
23
|
-
obj.send("#{@relationship_as_viewed_by_target}=".to_sym, @client)
|
24
|
-
if obj.save
|
25
|
-
@children << obj
|
26
|
-
self
|
27
|
-
else
|
28
|
-
false
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def clear
|
33
|
-
@children.each do |c|
|
34
|
-
break_back_link c
|
35
|
-
end
|
36
|
-
@children.clear
|
37
|
-
end
|
38
|
-
|
39
|
-
def delete(obj)
|
40
|
-
obj = @children.delete(obj)
|
41
|
-
break_back_link(obj) if obj
|
42
|
-
end
|
43
|
-
|
44
|
-
def break_back_link(obj)
|
45
|
-
if obj
|
46
|
-
obj.send("#{@relationship_as_viewed_by_target}=".to_sym, nil)
|
47
|
-
obj.save
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def empty?
|
52
|
-
@children.empty?
|
53
|
-
end
|
54
|
-
|
55
|
-
def size
|
56
|
-
@children.size
|
57
|
-
end
|
58
|
-
|
59
|
-
def [](*args)
|
60
|
-
@children[*args]
|
61
|
-
end
|
62
|
-
|
63
|
-
def first
|
64
|
-
@children[0]
|
65
|
-
end
|
66
|
-
|
67
|
-
def last
|
68
|
-
@children[size-1]
|
69
|
-
end
|
70
|
-
|
71
|
-
def each(&blk)
|
72
|
-
@children.each(&blk)
|
73
|
-
end
|
74
|
-
|
75
|
-
def reload
|
76
|
-
@children = load_children
|
77
|
-
end
|
78
|
-
|
79
|
-
def load_children
|
80
|
-
view_name = "#{@client.class}_#{@relationship}"
|
81
|
-
@children = RelaxDB.view(view_name, :key => @client._id)
|
82
|
-
end
|
83
|
-
|
84
|
-
def children=(children)
|
85
|
-
children.each do |obj|
|
86
|
-
obj.send("#{@relationship_as_viewed_by_target}=".to_sym, @client)
|
87
|
-
end
|
88
|
-
@children = children
|
89
|
-
end
|
90
|
-
|
91
|
-
def inspect
|
92
|
-
@children.inspect
|
93
|
-
end
|
94
|
-
|
95
|
-
# Play nice with Merb partials - [ obj ].flatten invokes
|
96
|
-
# obj.to_ary if it responds to to_ary
|
97
|
-
alias_method :to_ary, :to_a
|
98
|
-
|
99
|
-
end
|
100
|
-
|
101
|
-
end
|