Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
shotengai
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open-source
shotengai
Commits
7b04cd93
Commit
7b04cd93
authored
Apr 03, 2022
by
Ivan Lan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 更改 DslHelper Proxy 的命名空间
parent
7d590efa
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
35 additions
and
37 deletions
+35
-37
aasm_dlc.rb
lib/shotengai/aasm_dlc.rb
+35
-37
No files found.
lib/shotengai/aasm_dlc.rb
View file @
7b04cd93
module
Shotengai
module
Shotengai
module
AASM_DLC
module
AASM_DLC
require
'aasm'
require
"aasm"
def
self
.
included
(
base
)
def
self
.
included
(
base
)
add_event_callbacks
add_event_callbacks
base
.
include
AASM
base
.
include
AASM
...
@@ -8,43 +8,41 @@ module Shotengai
...
@@ -8,43 +8,41 @@ module Shotengai
end
end
def
self
.
add_event_callbacks
def
self
.
add_event_callbacks
# DslHelper::Proxy.class_eval do
AASM
::
DslHelper
::
Proxy
.
class_eval
do
#
def
initialize
(
options
,
valid_keys
,
source
)
# def initialize(options, valid_keys, source)
# original
# # original
@valid_keys
=
valid_keys
# @valid_keys = valid_keys
@source
=
source
# event or transition
# @source = source # event or transition
@options
=
options
# @options = options
# dlc
# # dlc
expend_options
if
AASM
::
Core
::
Event
===
source
# expend_options if AASM::Core::Event === source
end
# end
#
def
expend_options
# def expend_options
preset_methods
=
[]
# preset_methods = []
# add callbacks for valid_keys to definite event
# # add callbacks for valid_keys to definite event
# vaild_keys in aasm 4.12.2
# # vaild_keys in aasm 4.12.2
# [ :after, :after_commit, :after_transaction, :before,
# # [ :after, :after_commit, :after_transaction, :before,
# :before_transaction, :ensure, :error, :before_success, :success ]
# # :before_transaction, :ensure, :error, :before_success, :success ]
# e.g.
# # e.g.
# event :pay ---> :after_pay, after_commit_pay ...
# # 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
#
#
# 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
end
# module ClassMethods
# module ClassMethods
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment