35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/after_commit/after_savepoint.rb', line 35
def self.included(base)
base.class_eval do
def release_savepoint_with_callback
increment_transaction_pointer
result = nil
begin
trigger_before_commit_callbacks
trigger_before_commit_on_create_callbacks
trigger_before_commit_on_update_callbacks
trigger_before_commit_on_save_callbacks
trigger_before_commit_on_destroy_callbacks
result = release_savepoint_without_callback
@disable_rollback = true
trigger_after_commit_callbacks
trigger_after_commit_on_create_callbacks
trigger_after_commit_on_update_callbacks
trigger_after_commit_on_save_callbacks
trigger_after_commit_on_destroy_callbacks
result
ensure
AfterCommit.cleanup(self)
decrement_transaction_pointer
end
end
alias_method_chain :release_savepoint, :callback
def rollback_to_savepoint_with_callback
return if @disable_rollback
increment_transaction_pointer
begin
result = nil
trigger_before_rollback_callbacks
result = rollback_to_savepoint_without_callback
trigger_after_rollback_callbacks
result
ensure
AfterCommit.cleanup(self)
decrement_transaction_pointer
end
decrement_transaction_pointer
end
alias_method_chain :rollback_to_savepoint, :callback
end
end
|