simple_model 1.4.1 → 1.4.2

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: 4ed17a81c487856f929ab1d5bc05a8c89414b93c
4
- data.tar.gz: dc64ef73dfd207421014127616a13e4d55fc9e04
3
+ metadata.gz: 40145db9483512a0a6d4209605362c68fdac9679
4
+ data.tar.gz: aaac8adad7bcbba5e3a08058c2b8b8a6df19317f
5
5
  SHA512:
6
- metadata.gz: 79b0a3d2342b150e50c5dc176da157469fde7196effe529fc04ad2759edebbb6ba427e5de318c266fafaf2651ed4cd5585a9be06f24e479f30ed2f3d1f9d39ae
7
- data.tar.gz: 5cfca5c5954df4e38fde878ba77cadda5fcdc60108181faca997f10df5d9874c7392368df384caecdb3622c3b3ee99b7d657ca91144e5f62645a4f29ed858b94
6
+ metadata.gz: ab3cf5ed3c7a3213ba5bb2853da12181015e7c6a6110eebf5fb72d3043c2a3686636b3cc29431a44a458558f092498a4e8407cb35eafbe1f45d5b12cd5c35f14
7
+ data.tar.gz: cd6bcd5f4e94bd2e8985a62179026401ce55efe8cc5d01359021463d352ee207d35ddb509d673702b659d6c53b79ca1a8e3e7bff88eb4fbaa50b057e32171804
@@ -229,7 +229,13 @@ module SimpleModel
229
229
  end
230
230
 
231
231
  module ClassMethods
232
- attr_accessor :config
232
+ attr_writer :config,
233
+ :defined_attributes,
234
+ :alias_attributes,
235
+ :default_attribute_settings
236
+
237
+ attr_reader :before_initialize,
238
+ :after_initialize
233
239
 
234
240
  AVAILABLE_ATTRIBUTE_METHODS.each do |method,method_options|
235
241
  define_method(method) do |*attributes|
@@ -263,18 +269,10 @@ module SimpleModel
263
269
  @alias_attributes ||= Hash.new
264
270
  end
265
271
 
266
- def alias_attributes=alias_attributes
267
- @alias_attributes = alias_attributes
268
- end
269
-
270
272
  def defined_attributes
271
273
  @defined_attributes ||= Hash.new
272
274
  end
273
275
 
274
- def defined_attributes=defined_attributes
275
- @defined_attributes = defined_attributes
276
- end
277
-
278
276
  def attribute_defined?(attr)
279
277
  defined_attributes.has_key?(attr.to_sym)
280
278
  end
@@ -300,10 +298,6 @@ module SimpleModel
300
298
  @default_attribute_settings ||= DEFAULT_ATTRIBUTE_SETTINGS
301
299
  end
302
300
 
303
- def default_attribute_settings=default_attribute_settings
304
- @default_attribute_settings = default_attribute_settings
305
- end
306
-
307
301
  # We want to re-run define_attribute_methods since attributes are not all defined
308
302
  # at once, so we must set @attribute_methods_generated to nil to allow the
309
303
  # re-run to occur ONLY IN RAILS 3.0.
@@ -335,6 +329,7 @@ module SimpleModel
335
329
  define_method(attr) do
336
330
  get_attribute(attr,options)
337
331
  end
332
+
338
333
  define_method("#{attr}?") do
339
334
  get_attribute?(attr)
340
335
  end
@@ -375,13 +370,6 @@ module SimpleModel
375
370
 
376
371
  # A hook to perform actions on the pending attributes or the object before
377
372
  # the pending attributes have been initialized.
378
- # Expects an lambda that accept the object, the pending attributes hash and
379
- # should return a hash to be set
380
- # EX: lambda {|obj,attrs| attrs.select{|k,v| !v.blank?}}
381
- def before_initialize
382
- @before_initialize
383
- end
384
-
385
373
  # Expects an lambda that accept the object, the pending attributes hash and
386
374
  # should return a hash to be set
387
375
  # EX: lambda {|obj,attrs| attrs.select{|k,v| !v.blank?}}
@@ -391,12 +379,6 @@ module SimpleModel
391
379
  end
392
380
 
393
381
  # A hook to perform actions after all attributes have been initialized
394
- # Expects an lambda that accept the object and the pending attributes hash
395
- # EX: lambda {|obj| puts "initialized"}
396
- def after_initialize
397
- @after_initialize
398
- end
399
-
400
382
  # Expects an lambda that accept the object and the pending attributes hash
401
383
  # EX: lambda {|obj| puts "initialized"}
402
384
  def after_initialize=after_initialize
@@ -83,6 +83,11 @@ module SimpleModel
83
83
 
84
84
  class << self
85
85
 
86
+ def after_any(meth=nil)
87
+ @after_any = meth if meth
88
+ @after_any
89
+ end
90
+
86
91
  # Defines the model action's instance methods and applied defaults. For every
87
92
  # action defined, we also define that actions ! method which raises exceptions
88
93
  # when the action fails.
@@ -91,11 +96,14 @@ module SimpleModel
91
96
  actions = [action,"#{action}!".to_sym]
92
97
  actions.each do |a|
93
98
  define_method(a) do |opts = {}|
99
+ rslt = nil
94
100
  options = default_options.merge(opts)
95
101
  options[:raise_exception] = a.to_s.match(/\!$/)
96
102
  run_callbacks(action) do
97
- run_model_action(methods,options)
103
+ rslt = run_model_action(methods,options)
98
104
  end
105
+ run_after_any
106
+ rslt
99
107
  end
100
108
  end
101
109
  end
@@ -126,6 +134,10 @@ module SimpleModel
126
134
 
127
135
  private
128
136
 
137
+ def run_after_any
138
+ self.send(self.class.after_any) if self.class.after_any
139
+ end
140
+
129
141
  # Skeleton for action instance methods
130
142
  def run_model_action(methods,options)
131
143
  completed = true
@@ -1,3 +1,3 @@
1
1
  module SimpleModel
2
- VERSION = "1.4.1"
2
+ VERSION = "1.4.2"
3
3
  end
@@ -94,12 +94,17 @@ describe SimpleModel::Base do
94
94
  save :my_save_method
95
95
  before_validation :set_foo
96
96
  after_validation :set_bar
97
- attr_accessor :foo,:bar
97
+ attr_accessor :foo,:bar, :log
98
98
  validates :foo, :presence => true
99
-
99
+ after_any :log_stuff
100
100
 
101
101
  private
102
102
 
103
+ def log_stuff
104
+ @log = "stuff"
105
+ end
106
+
107
+
103
108
  def my_save_method
104
109
  true
105
110
  end
@@ -125,10 +130,15 @@ describe SimpleModel::Base do
125
130
 
126
131
  it "should implement ActiveModel::Callbacks" do
127
132
  base_test.save
128
-
129
133
  expect(base_test.foo).to eql('foo')
130
134
  expect(base_test.bar).to eql('bar')
131
135
  end
136
+
137
+ it "should run after any" do
138
+ allow(base_test).to receive(:foo).and_return(nil)
139
+ expect(base_test.save).to eql(false)
140
+ expect(base_test.log).to eql("stuff")
141
+ end
132
142
  end
133
143
 
134
144
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua T Mckinney
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-04 00:00:00.000000000 Z
11
+ date: 2015-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport