active_repository 0.3.4 → 0.3.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.
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