Commit 7b04cd93 by Ivan Lan

feat: 更改 DslHelper Proxy 的命名空间

parent 7d590efa
module Shotengai
module AASM_DLC
require 'aasm'
require "aasm"
def self.included(base)
add_event_callbacks
base.include AASM
......@@ -8,43 +8,41 @@ module Shotengai
end
def self.add_event_callbacks
# DslHelper::Proxy.class_eval do
#
# def initialize(options, valid_keys, source)
# # original
# @valid_keys = valid_keys
# @source = source # event or transition
# @options = options
# # dlc
# expend_options if AASM::Core::Event === source
# end
#
# def expend_options
# preset_methods = []
# # add callbacks for valid_keys to definite event
# # vaild_keys in aasm 4.12.2
# # [ :after, :after_commit, :after_transaction, :before,
# # :before_transaction, :ensure, :error, :before_success, :success ]
# # e.g.
# # event :pay ---> :after_pay, after_commit_pay ...
# #
# # NOTE: QUESTION: add key :error would cancel all exception ?
# (@valid_keys - [:error, :ensure]).each do |callback|
# preset_methods << "#{callback}_#{@source.name}"
# @options[callback] = Array(@options[callback]) << "#{callback}_#{@source.name}"
# end
#
# # ignore the method missing if it was in preset_methods
# @source.class_eval("
# def invoke_callbacks(code, record, args)
# super(code, record, args)
# rescue NoMethodError
# code.to_s.in?(#{preset_methods}) ? true : raise
# end
# ")
# end
AASM::DslHelper::Proxy.class_eval do
def initialize(options, valid_keys, source)
# original
@valid_keys = valid_keys
@source = source # event or transition
@options = options
# dlc
expend_options if AASM::Core::Event === source
end
def expend_options
preset_methods = []
# add callbacks for valid_keys to definite event
# vaild_keys in aasm 4.12.2
# [ :after, :after_commit, :after_transaction, :before,
# :before_transaction, :ensure, :error, :before_success, :success ]
# e.g.
# event :pay ---> :after_pay, after_commit_pay ...
#
# end
# NOTE: QUESTION: add key :error would cancel all exception ?
(@valid_keys - [:error, :ensure]).each do |callback|
preset_methods << "#{callback}_#{@source.name}"
@options[callback] = Array(@options[callback]) << "#{callback}_#{@source.name}"
end
# ignore the method missing if it was in preset_methods
@source.class_eval("
def invoke_callbacks(code, record, args)
super(code, record, args)
rescue NoMethodError
code.to_s.in?(#{preset_methods}) ? true : raise
end
")
end
end
end
# module ClassMethods
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment