active_repository 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4066b2f88bcb0854427c407b27da4ae0a17a5b92
4
- data.tar.gz: a39ab7fe4b4dd35ccd0af5fcbf1a8e3c9ab67376
3
+ metadata.gz: 970b623c79bc3d82f26ec2633ecd5f161a9da6c0
4
+ data.tar.gz: c27de7763704247ee533b1328fbb5bfa353769fc
5
5
  SHA512:
6
- metadata.gz: d47c8c5572ce3b52e1d0c4c4dbe7871777a5805995008251152cd03b658a227dfe8931f4562124a995170fa6129879db7c8c7d922d68d944c3e4411b1e99d6ef
7
- data.tar.gz: 7626c6fc598178aad7104ac083f0e174bf7e274e25c64a43e273e197652d0d765faa8ec0d060953ee12871b329e70de28311b38bcdf90924bb84ac8fdae91ad1
6
+ metadata.gz: 74be967296edef046a1b499f4732176ee44bb4dec3088537c373c397d240a59a6b7689853aa424bbfa66ffa4b11b82a70ae850a3f174183d417191109932a115
7
+ data.tar.gz: 92a5a7ab239154a9281b4b114cc7fd65e20372892489ff1a161c5edff5d98b9f02a3ce5abd9dd3cc1b74126737bd8351236f5d20d86577852fc0ae402a024a0f
@@ -62,11 +62,11 @@ module ActiveRepository
62
62
  end
63
63
 
64
64
  def self.before_save(*methods, options)
65
- self.before_save_methods = ((before_save_methods || []) + methods).flatten
65
+ add_callbacks(__method__, methods, options)
66
66
  end
67
67
 
68
68
  def self.after_save(*methods, options)
69
- self.after_save_methods = ((after_save_methods || []) + methods).flatten
69
+ add_callbacks(__method__, methods, options)
70
70
  end
71
71
 
72
72
  # Constantize class name
@@ -90,6 +90,10 @@ module ActiveRepository
90
90
  self.model_class.to_s.constantize
91
91
  end
92
92
 
93
+ def self.repository?
94
+ self == persistence_class
95
+ end
96
+
93
97
  # Returns the Class responsible for persisting the objects
94
98
  def self.get_model_class
95
99
  puts '[deprecation warning] This method is going to be deprecated, use "persistence_class" instead.'
@@ -203,7 +207,7 @@ module ActiveRepository
203
207
  end
204
208
 
205
209
  def save(force=false)
206
- (before_save_methods || []).each { |method| self.send(method) }
210
+ execute_callbacks(before_save_methods)
207
211
  result = true
208
212
 
209
213
  if self.class == persistence_class
@@ -220,7 +224,8 @@ module ActiveRepository
220
224
  result = self.persist
221
225
  end
222
226
 
223
- (after_save_methods || []).each { |method| self.send(method) }
227
+ execute_callbacks(after_save_methods)
228
+ # (after_save_methods || []).each { |method| self.send(method) }
224
229
 
225
230
  result
226
231
  end
@@ -260,8 +265,25 @@ module ActiveRepository
260
265
  end
261
266
 
262
267
  private
263
- def self.repository?
264
- self == persistence_class
268
+ def self.add_callbacks(kind, methods, options)
269
+ methods = methods.map { |method| {method: method, options: options} }
270
+ current_callbacks = (self.send("#{kind}_methods") || [])
271
+ self.send("#{kind}_methods=", (current_callbacks + methods)).flatten
272
+ end
273
+ private_class_method :set_callback
274
+
275
+ def execute_callbacks(callbacks)
276
+ callbacks.each do |callback|
277
+ method = callback[:method]
278
+ options = callback[:options]
279
+
280
+ if_option = !!options[:if].try(:call, self)
281
+ else_option = options[:else].try(:call, self)
282
+
283
+ if if_option || !(else_option.nil? ? true : else_option)
284
+ self.send(method)
285
+ end
286
+ end
265
287
  end
266
288
 
267
289
  # Updates created_at and updated_at
@@ -1,3 +1,3 @@
1
1
  module ActiveRepository
2
- VERSION = "0.3.4"
2
+ VERSION = "0.3.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_repository
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Caio Torres
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-03 00:00:00.000000000 Z
11
+ date: 2014-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_hash