方法
- C
- R
- T
- W
包含的模块
类公共方法
register_hook(hook, outer: false) 链接
在 run
和 complete
阶段注册一个要调用的对象。
hook.complete
将接收 hook.run
返回的值,并且只有在 run
之前被调用时才会被调用。(通常,这意味着如果在之前的 to_run
块中发生异常,它将不会被调用;所有普通的 to_complete
块在这种情况下都会被调用。)
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/execution_wrapper.rb, line 50 def self.register_hook(hook, outer: false) if outer to_run RunHook.new(hook), prepend: true to_complete :after, CompleteHook.new(hook) else to_run RunHook.new(hook) to_complete CompleteHook.new(hook) end end
run!(reset: false) 链接
运行此执行。
返回一个实例,其 complete!
方法必须在工作完成后调用。
如果可能,请优先使用 wrap
。
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/execution_wrapper.rb, line 66 def self.run!(reset: false) if reset lost_instance = IsolatedExecutionState.delete(active_key) lost_instance&.complete! else return Null if active? end new.tap do |instance| success = nil begin instance.run! success = true ensure instance.complete! unless success end end end
to_complete(*args, &block) 链接
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/execution_wrapper.rb, line 21 def self.to_complete(*args, &block) set_callback(:complete, *args, &block) end
to_run(*args, &block) 链接
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/execution_wrapper.rb, line 17 def self.to_run(*args, &block) set_callback(:run, *args, &block) end
wrap(source: "application.active_support") 链接
在提供的代码块中执行工作作为一次执行。
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/execution_wrapper.rb, line 86 def self.wrap(source: "application.active_support") return yield if active? instance = run! begin yield rescue => error error_reporter&.report(error, handled: false, source: source) raise ensure instance.complete! end end
实例公共方法
complete!() 链接
完成此正在进行的执行。此方法必须在 run!
的任何调用结果上调用一次。
如果可能,请优先使用 wrap
。
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/execution_wrapper.rb, line 135 def complete! complete ensure IsolatedExecutionState.delete(self.class.active_key) end