fabrication 2.5.4 → 2.6.0

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.
@@ -8,4 +8,8 @@ class Fabrication::Generator::ActiveRecord < Fabrication::Generator::Base
8
8
  self.__instance = __klass.new(__attributes, without_protection: true)
9
9
  end
10
10
 
11
+ def validate_instance
12
+ __instance.valid?
13
+ end
14
+
11
15
  end
@@ -12,23 +12,27 @@ class Fabrication::Generator::Base
12
12
  else
13
13
  build_instance
14
14
  end
15
-
16
15
  execute_callbacks(callbacks[:after_build])
17
-
16
+ execute_callbacks(callbacks[:before_validation])
17
+ validate_instance
18
+ execute_callbacks(callbacks[:after_validation])
18
19
  __instance
19
20
  end
20
21
 
21
- def execute_callbacks(callbacks)
22
- callbacks.each { |callback| __instance.instance_exec(__instance, __transient_attributes, &callback) } if callbacks
23
- end
24
-
25
22
  def create(attributes=[], callbacks=[])
26
23
  build(attributes, callbacks)
24
+ execute_callbacks(callbacks[:before_save])
25
+ execute_callbacks(callbacks[:before_create])
27
26
  persist
28
27
  execute_callbacks(callbacks[:after_create])
28
+ execute_callbacks(callbacks[:after_save])
29
29
  __instance
30
30
  end
31
31
 
32
+ def execute_callbacks(callbacks)
33
+ callbacks.each { |callback| __instance.instance_exec(__instance, __transient_attributes, &callback) } if callbacks
34
+ end
35
+
32
36
  def to_hash(attributes=[], callbacks=[])
33
37
  process_attributes(attributes)
34
38
  (Fabrication::Config.active_support? ? HashWithIndifferentAccess.new : {}).tap do |hash|
@@ -71,6 +75,8 @@ class Fabrication::Generator::Base
71
75
  __attributes[method_name] || super
72
76
  end
73
77
 
78
+ def validate_instance; end
79
+
74
80
  protected
75
81
 
76
82
  attr_accessor :__klass, :__instance, :__transient_attributes
@@ -8,9 +8,14 @@ class Fabrication::Generator::DataMapper < Fabrication::Generator::Base
8
8
  self.__instance = __klass.new(__attributes)
9
9
  end
10
10
 
11
+ def validate_instance
12
+ __instance.valid?
13
+ end
14
+
11
15
  protected
12
16
 
13
17
  def persist
14
18
  __instance.save
15
19
  end
20
+
16
21
  end
@@ -8,4 +8,8 @@ class Fabrication::Generator::Keymaker < Fabrication::Generator::Base
8
8
  __instance.save
9
9
  end
10
10
 
11
+ def validate_instance
12
+ __instance.valid?
13
+ end
14
+
11
15
  end
@@ -12,4 +12,8 @@ class Fabrication::Generator::Mongoid < Fabrication::Generator::Base
12
12
  end
13
13
  end
14
14
 
15
+ def validate_instance
16
+ __instance.valid?
17
+ end
18
+
15
19
  end
@@ -26,4 +26,8 @@ class Fabrication::Generator::Sequel < Fabrication::Generator::Base
26
26
  __instance.save
27
27
  end
28
28
 
29
+ def validate_instance
30
+ __instance.valid?
31
+ end
32
+
29
33
  end
@@ -13,15 +13,41 @@ class Fabrication::Schematic::Evaluator < BasicObject
13
13
  end
14
14
 
15
15
  def after_build(&block)
16
+ ::Kernel.puts "DEPRECATION WARNING: after_build callbacks will be removed in fabrication 2.7"
16
17
  @_definition.callbacks[:after_build] ||= []
17
18
  @_definition.callbacks[:after_build] << block
18
19
  end
19
20
 
21
+ def before_validation(&block)
22
+ @_definition.callbacks[:before_validation] ||= []
23
+ @_definition.callbacks[:before_validation] << block
24
+ end
25
+
26
+ def after_validation(&block)
27
+ @_definition.callbacks[:after_validation] ||= []
28
+ @_definition.callbacks[:after_validation] << block
29
+ end
30
+
31
+ def before_save(&block)
32
+ @_definition.callbacks[:before_save] ||= []
33
+ @_definition.callbacks[:before_save] << block
34
+ end
35
+
36
+ def before_create(&block)
37
+ @_definition.callbacks[:before_create] ||= []
38
+ @_definition.callbacks[:before_create] << block
39
+ end
40
+
20
41
  def after_create(&block)
21
42
  @_definition.callbacks[:after_create] ||= []
22
43
  @_definition.callbacks[:after_create] << block
23
44
  end
24
45
 
46
+ def after_save(&block)
47
+ @_definition.callbacks[:after_save] ||= []
48
+ @_definition.callbacks[:after_save] << block
49
+ end
50
+
25
51
  def on_init(&block)
26
52
  @_definition.callbacks[:on_init] = block
27
53
  end
@@ -1,3 +1,3 @@
1
1
  module Fabrication
2
- VERSION = '2.5.4'
2
+ VERSION = '2.6.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fabrication
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.4
4
+ version: 2.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-09 00:00:00.000000000 Z
12
+ date: 2013-02-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord