fabrication 2.5.4 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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