Spec-Zone.ru › Ruby on Rails 5.0

класс ActiveSupport::ExecutionWrapper

Родитель:
Object
Включенные модули:
ActiveSupport::Callbacks

Атрибуты

active[RW]

Открытые методы класса

register_hook(hook, outer: false) Показать исходный код
# File activesupport/lib/active_support/execution_wrapper.rb, line 47
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 и complete.

hook.complete будет передан значением, возвращаемым hook.run, и будет вызван только если run был ранее вызван. (В основном, это означает, что он не будет вызван, если произойдет исключение в предыдущем блоке to_run; все обычные блоки to_complete вызываются в этой ситуации.)

run!() Показать исходный код
# File activesupport/lib/active_support/execution_wrapper.rb, line 63
def self.run!
  if active?
    Null
  else
    new.tap do |instance|
      success = nil
      begin
        instance.run!
        success = true
      ensure
        instance.complete! unless success
      end
    end
  end
end

Выполнить это выполнение.

Возвращает экземпляр, метод complete! которого обязательно вызывается после выполнения работы.

Когда это возможно, предпочитайте wrap.

to_complete(*args, &block) Показать исходный код
# File activesupport/lib/active_support/execution_wrapper.rb, line 18
def self.to_complete(*args, &block)
  set_callback(:complete, *args, &block)
end
to_run(*args, &block) Показать исходный код
# File activesupport/lib/active_support/execution_wrapper.rb, line 14
def self.to_run(*args, &block)
  set_callback(:run, *args, &block)
end
wrap() { || ... } Показать исходный код
# File activesupport/lib/active_support/execution_wrapper.rb, line 80
def self.wrap
  return yield if active?

  instance = run!
  begin
    yield
  ensure
    instance.complete!
  end
end

Выполнить работу в предоставленном блоке в качестве выполнения.

Открытые методы экземпляра

complete!() Показать исходный код
# File activesupport/lib/active_support/execution_wrapper.rb, line 115
def complete!
  run_callbacks(:complete)
ensure
  self.class.active.delete Thread.current
end

Завершить текущее выполнение. Этот метод обязательно вызывается ровно один раз на результате любого вызова run!.

Когда это возможно, предпочитайте wrap.

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API