mongomatic 0.5.6 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -69,14 +69,14 @@ module Mongomatic
69
69
  do_callback(:after_drop)
70
70
  end
71
71
 
72
- [:before_drop, :after_drop].each do |method|
73
- define_method(method) { true }
74
- end
75
-
76
72
  private
77
73
 
78
74
  def do_callback(meth)
79
- send(meth)
75
+ begin
76
+ send(meth)
77
+ rescue NoMethodError => e
78
+ false
79
+ end
80
80
  end
81
81
  end
82
82
 
@@ -238,12 +238,6 @@ module Mongomatic
238
238
  @doc || {}
239
239
  end
240
240
 
241
- [ :before_validate, :after_validate, :before_insert, :before_insert_or_update,
242
- :after_insert, :after_insert_or_update, :before_update, :after_update,
243
- :before_remove, :after_remove].each do |method|
244
- define_method(method) { true }
245
- end
246
-
247
241
  protected
248
242
 
249
243
  def hash_for_field(field, break_if_dne=false)
@@ -260,7 +254,11 @@ module Mongomatic
260
254
  end
261
255
 
262
256
  def do_callback(meth)
263
- send(meth)
257
+ begin
258
+ send(meth)
259
+ rescue NoMethodError => e
260
+ false
261
+ end
264
262
  end
265
263
  end
266
264
  end
@@ -7,7 +7,7 @@ module Mongomatic
7
7
  # MongoDB equivalent: { $push : { field : value } }<br/>
8
8
  # Appends value to field, if field is an existing array, otherwise sets field to the array [value]
9
9
  # if field is not present. If field is present but is not an array, error is returned.
10
- def push(field, val, safe=false)
10
+ def push(field, val, update_opts={}, safe=false)
11
11
  mongo_field = field.to_s
12
12
  field, hash = hash_for_field(mongo_field)
13
13
 
@@ -18,7 +18,7 @@ module Mongomatic
18
18
  op = { "$push" => { mongo_field => val } }
19
19
  res = true
20
20
 
21
- safe == true ? res = update!({}, op) : update({}, op)
21
+ safe == true ? res = update!(update_opts, op) : update(update_opts, op)
22
22
 
23
23
  if res
24
24
  hash[field] ||= []
@@ -27,8 +27,8 @@ module Mongomatic
27
27
  end
28
28
  end
29
29
 
30
- def push!(field, val)
31
- push(field, val, true)
30
+ def push!(field, val, update_opts={})
31
+ push(field, val, update_opts, true)
32
32
  end
33
33
 
34
34
  # MongoDB equivalent: { $pushAll : { field : value_array } }<br/>
@@ -36,7 +36,7 @@ module Mongomatic
36
36
  # the array value_array if field is not present. If field is present but is not an array, an error
37
37
  # condition is raised.
38
38
  # user.push("interests", ["skydiving", "coding"])
39
- def push_all(field, val, safe=false)
39
+ def push_all(field, val, update_opts={}, safe=false)
40
40
  mongo_field = field.to_s
41
41
  field, hash = hash_for_field(mongo_field)
42
42
 
@@ -48,7 +48,7 @@ module Mongomatic
48
48
  op = { "$pushAll" => { mongo_field => val } }
49
49
  res = true
50
50
 
51
- safe == true ? res = update!({}, op) : update({}, op)
51
+ safe == true ? res = update!(update_opts, op) : update(update_opts, op)
52
52
 
53
53
  if res
54
54
  hash[field] ||= []
@@ -57,15 +57,15 @@ module Mongomatic
57
57
  end
58
58
  end
59
59
 
60
- def push_all!(field, val)
61
- push_all(field, val, true)
60
+ def push_all!(field, val, update_opts={})
61
+ push_all(field, val, update_opts, true)
62
62
  end
63
63
 
64
64
  # MongoDB equivalent: { $pull : { field : _value } }<br/>
65
65
  # Removes all occurrences of value from field, if field is an array. If field is present but is not
66
66
  # an array, an error condition is raised.
67
67
  # user.pull("interests", "watching paint dry")
68
- def pull(field, val, safe=false)
68
+ def pull(field, val, update_opts={}, safe=false)
69
69
  mongo_field = field.to_s
70
70
  field, hash = hash_for_field(mongo_field)
71
71
 
@@ -76,7 +76,7 @@ module Mongomatic
76
76
  op = { "$pull" => { mongo_field => val } }
77
77
  res = true
78
78
 
79
- safe == true ? res = update!({}, op) : update({}, op)
79
+ safe == true ? res = update!(update_opts, op) : update(update_opts, op)
80
80
 
81
81
  if res
82
82
  hash[field] ||= []
@@ -85,15 +85,15 @@ module Mongomatic
85
85
  end
86
86
  end
87
87
 
88
- def pull!(field, val)
89
- pull(field, val, true)
88
+ def pull!(field, val, update_opts={})
89
+ pull(field, val, update_opts, true)
90
90
  end
91
91
 
92
92
  # MongoDB equivalent: { $pullAll : { field : value_array } }<br/>
93
93
  # Removes all occurrences of each value in value_array from field, if field is an array. If field is
94
94
  # present but is not an array, an error condition is raised.
95
95
  # user.pull_all("interests", ["watching paint dry", "sitting on my ass"])
96
- def pull_all(field, val, safe=false)
96
+ def pull_all(field, val, update_opts={}, safe=false)
97
97
  mongo_field = field.to_s
98
98
  field, hash = hash_for_field(mongo_field)
99
99
 
@@ -104,7 +104,7 @@ module Mongomatic
104
104
  op = { "$pullAll" => { mongo_field => create_array(val) } }
105
105
  res = true
106
106
 
107
- safe == true ? res = update!({}, op) : update({}, op)
107
+ safe == true ? res = update!(update_opts, op) : update(update_opts, op)
108
108
 
109
109
  if res
110
110
  hash[field] ||= []
@@ -114,14 +114,14 @@ module Mongomatic
114
114
  end
115
115
  end
116
116
 
117
- def pull_all!(field, val)
118
- pull_all(field, val, true)
117
+ def pull_all!(field, val, update_opts={})
118
+ pull_all(field, val, update_opts, true)
119
119
  end
120
120
 
121
121
  # MongoDB equivalent: { $inc : { field : value } }<br/>
122
122
  # Increments field by the number value if field is present in the object, otherwise sets field to the number value.
123
123
  # user.inc("cents_in_wallet", 1000)
124
- def inc(field, val, safe=false)
124
+ def inc(field, val, update_opts={}, safe=false)
125
125
  mongo_field = field.to_s
126
126
  field, hash = hash_for_field(mongo_field)
127
127
 
@@ -132,7 +132,7 @@ module Mongomatic
132
132
  op = { "$inc" => { mongo_field => val } }
133
133
  res = true
134
134
 
135
- safe == true ? res = update!({}, op) : update({}, op)
135
+ safe == true ? res = update!(update_opts, op) : update(update_opts, op)
136
136
 
137
137
  if res
138
138
  hash[field] ||= 0
@@ -141,21 +141,21 @@ module Mongomatic
141
141
  end
142
142
  end
143
143
 
144
- def inc!(field, val)
145
- inc(field, val, true)
144
+ def inc!(field, val, update_opts={})
145
+ inc(field, val, update_opts, true)
146
146
  end
147
147
 
148
148
  # MongoDB equivalent: { $set : { field : value } }<br/>
149
149
  # Sets field to value. All datatypes are supported with $set.
150
150
  # user.set("name", "Ben")
151
- def set(field, val, safe=false)
151
+ def set(field, val, update_opts={}, safe=false)
152
152
  mongo_field = field.to_s
153
153
  field, hash = hash_for_field(field.to_s)
154
154
 
155
155
  op = { "$set" => { mongo_field => val } }
156
156
  res = true
157
157
 
158
- safe == true ? res = update!({}, op) : update({}, op)
158
+ safe == true ? res = update!(update_opts, op) : update(update_opts, op)
159
159
 
160
160
  if res
161
161
  hash[field] = val
@@ -163,21 +163,21 @@ module Mongomatic
163
163
  end
164
164
  end
165
165
 
166
- def set!(field, val)
167
- set(field, val, true)
166
+ def set!(field, val, update_opts={})
167
+ set(field, val, update_opts, true)
168
168
  end
169
169
 
170
170
  # MongoDB equivalent: { $unset : { field : 1} }<br/>
171
171
  # Deletes a given field. v1.3+
172
172
  # user.unset("name")
173
- def unset(field, safe=false)
173
+ def unset(field, update_opts={}, safe=false)
174
174
  mongo_field = field.to_s
175
175
  field, hash = hash_for_field(mongo_field)
176
176
 
177
177
  op = { "$unset" => { mongo_field => 1 } }
178
178
  res = true
179
179
 
180
- safe == true ? res = update!({}, op) : update({}, op)
180
+ safe == true ? res = update!(update_opts, op) : update(update_opts, op)
181
181
 
182
182
  if res
183
183
  hash.delete(field)
@@ -185,8 +185,8 @@ module Mongomatic
185
185
  end
186
186
  end
187
187
 
188
- def unset!(field)
189
- unset(field, true)
188
+ def unset!(field, update_opts={})
189
+ unset(field, update_opts, true)
190
190
  end
191
191
 
192
192
  # MongoDB equivalent: { $addToSet : { field : value } }<br/>
@@ -194,7 +194,7 @@ module Mongomatic
194
194
  # Or to add many values:<br/>
195
195
  # { $addToSet : { a : { $each : [ 3 , 5 , 6 ] } } }
196
196
  # user.add_to_set("friend_ids", BSON::ObjectId('...'))
197
- def add_to_set(field, val, safe=false)
197
+ def add_to_set(field, val, update_opts={}, safe=false)
198
198
  mongo_field = field.to_s
199
199
  field, hash = hash_for_field(mongo_field)
200
200
 
@@ -211,7 +211,7 @@ module Mongomatic
211
211
  end
212
212
 
213
213
  res = true
214
- safe == true ? res = update!({}, op) : update({}, op)
214
+ safe == true ? res = update!(update_opts, op) : update(update_opts, op)
215
215
 
216
216
  if res
217
217
  hash[field] ||= []
@@ -222,14 +222,14 @@ module Mongomatic
222
222
  end
223
223
  end
224
224
 
225
- def add_to_set!(field, val)
226
- add_to_set(field, val, true)
225
+ def add_to_set!(field, val, update_opts={})
226
+ add_to_set(field, val, update_opts, true)
227
227
  end
228
228
 
229
229
  # MongoDB equivalent: { $pop : { field : 1 } }<br/>
230
230
  # Removes the last element in an array (ADDED in 1.1)
231
231
  # user.pop_last("friend_ids")
232
- def pop_last(field, safe=false)
232
+ def pop_last(field, update_opts={}, safe=false)
233
233
  mongo_field = field.to_s
234
234
  field, hash = hash_for_field(mongo_field)
235
235
 
@@ -240,7 +240,7 @@ module Mongomatic
240
240
  op = { "$pop" => { mongo_field => 1 } }
241
241
 
242
242
  res = true
243
- safe == true ? res = update!({}, op) : update({}, op)
243
+ safe == true ? res = update!(update_opts, op) : update(update_opts, op)
244
244
 
245
245
  if res
246
246
  hash[field] ||= []
@@ -249,14 +249,14 @@ module Mongomatic
249
249
  end
250
250
  end
251
251
 
252
- def pop_last!(field)
253
- pop_last(field, true)
252
+ def pop_last!(field, update_opts={})
253
+ pop_last(field, update_opts, true)
254
254
  end
255
255
 
256
256
  # MongoDB equivalent: { $pop : { field : -1 } }<br/>
257
257
  # Removes the first element in an array (ADDED in 1.1)
258
258
  # user.pop_first("friend_ids")
259
- def pop_first(field, safe=false)
259
+ def pop_first(field, update_opts={}, safe=false)
260
260
  mongo_field = field.to_s
261
261
  field, hash = hash_for_field(mongo_field)
262
262
 
@@ -267,7 +267,7 @@ module Mongomatic
267
267
  op = { "$pop" => { mongo_field => -1 } }
268
268
 
269
269
  res = true
270
- safe == true ? res = update!({}, op) : update({}, op)
270
+ safe == true ? res = update!(update_opts, op) : update(update_opts, op)
271
271
 
272
272
  if res
273
273
  hash[field] ||= []
@@ -276,8 +276,8 @@ module Mongomatic
276
276
  end
277
277
  end
278
278
 
279
- def pop_first!(field)
280
- pop_first(field, true)
279
+ def pop_first!(field, update_opts={})
280
+ pop_first(field, update_opts, true)
281
281
  end
282
282
 
283
283
  end
data/test/helper.rb CHANGED
@@ -9,9 +9,6 @@ require 'mongomatic'
9
9
 
10
10
  Mongomatic.db = Mongo::Connection.new.db("mongomatic_test")
11
11
 
12
- class Car < Mongomatic::Base
13
- end
14
-
15
12
  class Person < Mongomatic::Base
16
13
  include Mongomatic::Expectations::Helper
17
14
  attr_accessor :callback_tests
@@ -1,13 +1,6 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestMongomatic < Test::Unit::TestCase
4
- should "not fail if callbacks are undefined" do
5
- Car.collection.drop
6
- c1 = Car.new(:make => "Honda", :model => "Accord")
7
- c1.insert!
8
- assert_equal c1, Car.find_one(c1["_id"])
9
- end
10
-
11
4
  should "treat all keys as strings" do
12
5
  Person.collection.drop
13
6
  p1 = Person.new(:name => "Jordan")
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 5
8
- - 6
9
- version: 0.5.6
8
+ - 7
9
+ version: 0.5.7
10
10
  platform: ruby
11
11
  authors:
12
12
  - Ben Myles
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-09-17 00:00:00 -07:00
17
+ date: 2010-10-01 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency