mordor 0.2.19 → 0.2.20
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/mordor/resource.rb +40 -5
- data/mordor.gemspec +2 -2
- metadata +28 -28
data/lib/mordor/resource.rb
CHANGED
@@ -81,8 +81,10 @@ module Mordor
|
|
81
81
|
end
|
82
82
|
self_hash = ordered_self_hash
|
83
83
|
end
|
84
|
-
|
85
|
-
|
84
|
+
with_collection do |collection|
|
85
|
+
insert_id = collection.insert(self_hash)
|
86
|
+
self._id = insert_id
|
87
|
+
end
|
86
88
|
else
|
87
89
|
insert_id = self.update
|
88
90
|
end
|
@@ -91,8 +93,17 @@ module Mordor
|
|
91
93
|
|
92
94
|
alias_method :save!, :save
|
93
95
|
|
96
|
+
def with_collection
|
97
|
+
self.class.with_collection do |collection|
|
98
|
+
yield collection
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
94
102
|
def update
|
95
|
-
insert_id =
|
103
|
+
insert_id = nil
|
104
|
+
with_collection do |collection|
|
105
|
+
insert_id = collection.update({:_id => self._id}, self.to_hash)
|
106
|
+
end
|
96
107
|
insert_id
|
97
108
|
end
|
98
109
|
|
@@ -136,7 +147,11 @@ module Mordor
|
|
136
147
|
end
|
137
148
|
|
138
149
|
def collection
|
139
|
-
|
150
|
+
collection = nil
|
151
|
+
with_database do |database|
|
152
|
+
collection = database.collection(self.collection_name)
|
153
|
+
end
|
154
|
+
collection
|
140
155
|
end
|
141
156
|
|
142
157
|
def collection_name
|
@@ -171,6 +186,24 @@ module Mordor
|
|
171
186
|
@db
|
172
187
|
end
|
173
188
|
|
189
|
+
def with_database(max_retries=60)
|
190
|
+
retries = 0
|
191
|
+
begin
|
192
|
+
yield self.database
|
193
|
+
rescue Mongo::ConnectionFailure => ex
|
194
|
+
retries += 1
|
195
|
+
raise ex if retries > max_retries
|
196
|
+
sleep(0.5)
|
197
|
+
retry
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
def with_collection
|
202
|
+
with_database do |database|
|
203
|
+
yield database.collection(self.collection_name)
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
174
207
|
def find_by_id(id)
|
175
208
|
get(id)
|
176
209
|
end
|
@@ -250,7 +283,9 @@ module Mordor
|
|
250
283
|
end
|
251
284
|
|
252
285
|
def ensure_index(attribute)
|
253
|
-
|
286
|
+
with_collection do |collection|
|
287
|
+
collection.ensure_index( [ [attribute.to_s, index_types[attribute] ]] )
|
288
|
+
end
|
254
289
|
end
|
255
290
|
|
256
291
|
def indices
|
data/mordor.gemspec
CHANGED
@@ -2,8 +2,8 @@ Gem::Specification.new do |s|
|
|
2
2
|
s.name = "mordor"
|
3
3
|
|
4
4
|
# Do not set the version and date field manually, this is done by the release script
|
5
|
-
s.version = "0.2.
|
6
|
-
s.date = "2013-
|
5
|
+
s.version = "0.2.20"
|
6
|
+
s.date = "2013-06-10"
|
7
7
|
|
8
8
|
s.summary = "mordor"
|
9
9
|
s.description = <<-eos
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mordor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 63
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 20
|
10
|
+
version: 0.2.20
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jan-Willem Koelewijn
|
@@ -16,12 +16,11 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2013-
|
19
|
+
date: 2013-06-10 00:00:00 +02:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
|
-
|
24
|
-
prerelease: false
|
23
|
+
name: rake
|
25
24
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
26
25
|
none: false
|
27
26
|
requirements:
|
@@ -31,11 +30,11 @@ dependencies:
|
|
31
30
|
segments:
|
32
31
|
- 0
|
33
32
|
version: "0"
|
34
|
-
|
33
|
+
prerelease: false
|
34
|
+
type: :development
|
35
35
|
requirement: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
|
38
|
-
prerelease: false
|
37
|
+
name: rspec
|
39
38
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
40
39
|
none: false
|
41
40
|
requirements:
|
@@ -46,11 +45,11 @@ dependencies:
|
|
46
45
|
- 2
|
47
46
|
- 0
|
48
47
|
version: "2.0"
|
49
|
-
|
48
|
+
prerelease: false
|
49
|
+
type: :development
|
50
50
|
requirement: *id002
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
|
-
|
53
|
-
prerelease: false
|
52
|
+
name: json
|
54
53
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
54
|
none: false
|
56
55
|
requirements:
|
@@ -60,11 +59,11 @@ dependencies:
|
|
60
59
|
segments:
|
61
60
|
- 0
|
62
61
|
version: "0"
|
63
|
-
|
62
|
+
prerelease: false
|
63
|
+
type: :development
|
64
64
|
requirement: *id003
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
|
-
|
67
|
-
prerelease: false
|
66
|
+
name: extlib
|
68
67
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
69
68
|
none: false
|
70
69
|
requirements:
|
@@ -74,11 +73,11 @@ dependencies:
|
|
74
73
|
segments:
|
75
74
|
- 0
|
76
75
|
version: "0"
|
77
|
-
|
76
|
+
prerelease: false
|
77
|
+
type: :development
|
78
78
|
requirement: *id004
|
79
79
|
- !ruby/object:Gem::Dependency
|
80
|
-
|
81
|
-
prerelease: false
|
80
|
+
name: mongo
|
82
81
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
83
82
|
none: false
|
84
83
|
requirements:
|
@@ -88,11 +87,11 @@ dependencies:
|
|
88
87
|
segments:
|
89
88
|
- 0
|
90
89
|
version: "0"
|
91
|
-
|
90
|
+
prerelease: false
|
91
|
+
type: :development
|
92
92
|
requirement: *id005
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
|
-
|
95
|
-
prerelease: false
|
94
|
+
name: extlib
|
96
95
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
97
96
|
none: false
|
98
97
|
requirements:
|
@@ -102,11 +101,11 @@ dependencies:
|
|
102
101
|
segments:
|
103
102
|
- 0
|
104
103
|
version: "0"
|
105
|
-
|
104
|
+
prerelease: false
|
105
|
+
type: :runtime
|
106
106
|
requirement: *id006
|
107
107
|
- !ruby/object:Gem::Dependency
|
108
|
-
|
109
|
-
prerelease: false
|
108
|
+
name: mongo
|
110
109
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
111
110
|
none: false
|
112
111
|
requirements:
|
@@ -116,11 +115,11 @@ dependencies:
|
|
116
115
|
segments:
|
117
116
|
- 0
|
118
117
|
version: "0"
|
119
|
-
|
118
|
+
prerelease: false
|
119
|
+
type: :runtime
|
120
120
|
requirement: *id007
|
121
121
|
- !ruby/object:Gem::Dependency
|
122
|
-
|
123
|
-
prerelease: false
|
122
|
+
name: json
|
124
123
|
version_requirements: &id008 !ruby/object:Gem::Requirement
|
125
124
|
none: false
|
126
125
|
requirements:
|
@@ -130,7 +129,8 @@ dependencies:
|
|
130
129
|
segments:
|
131
130
|
- 0
|
132
131
|
version: "0"
|
133
|
-
|
132
|
+
prerelease: false
|
133
|
+
type: :runtime
|
134
134
|
requirement: *id008
|
135
135
|
description: " Small gem to add MongoDB Resources, resources have attributes that translate into document fields. When an attribute is declared, finders for the attribute are added to the Resource automatically\n"
|
136
136
|
email:
|