Spec-Zone.ru › Homebrew

Модуль: Debrew Приватный

Определён в:
debrew.rb

Обзор

Этот модуль является частью приватного API. Этот модуль можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого модуля, так как он может быть удалён или изменён без предупреждения.

Вспомогательный модуль для отладки формул.

Определено в пространстве имён

Модули: Formula Классы: Menu, self

Краткое описание атрибутов класса свернуть

  • .debugged_exceptions ⇒ Set<Exception> только для чтения приватный

Краткое описание методов класса свернуть

  • .active? ⇒ Boolean приватный
  • .debrew(&_block) ⇒ T.type_parameter(:U)? приватный
  • .debug(exception) ⇒ Symbol приватный

Подробное описание атрибутов класса

.debugged_exceptions ⇒ Set<Exception> (только для чтения)

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Set<Exception>)


88
89
90
# File 'debrew.rb', line 88

def debugged_exceptions
  @debugged_exceptions
end

Подробное описание методов класса

.active? ⇒ Boolean

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


91
# File 'debrew.rb', line 91

def active? = !@mutex.nil?

.debrew(&_block) ⇒ T.type_parameter(:U)?

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Параметры:

  • _block (T.proc.returns(T.type_parameter(:U)))

Возвращает:

  • (T.type_parameter(:U), nil)


99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'debrew.rb', line 99

def self.debrew(&_block)
  @mutex = Mutex.new
  Ignorable.hook_raise

  begin
    yield
  rescue SystemExit
    raise
  rescue Ignorable::ExceptionMixin => e
    e.ignore if debug(e) == :ignore # execution jumps back to where the exception was thrown
    nil
  ensure
    Ignorable.unhook_raise
    @mutex = nil
  end
end

.debug(exception) ⇒ Symbol

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Параметры:

  • exception (Exception)

Возвращает:

  • (Symbol)


117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'debrew.rb', line 117

def self.debug(exception)
  raise(exception) if !active? || !debugged_exceptions.add?(exception) || !@mutex&.try_lock

  begin
    puts exception.backtrace&.first
    puts Formatter.error(exception, label: exception.class.name)

    loop do
      Menu.choose do |menu|
        menu.prompt = "Choose an action: "

        menu.choice(:raise) { raise(exception) }
        menu.choice(:ignore) { return :ignore } if exception.is_a?(Ignorable::ExceptionMixin)
        menu.choice(:backtrace) { puts exception.backtrace }

        if exception.is_a?(Ignorable::ExceptionMixin)
          menu.choice(:irb) do
            puts "When you exit this IRB session, execution will continue."
            set_trace_func proc { |event, _, _, id, binding, klass|
              if klass == Object && id == :raise && event == "return"
                set_trace_func(nil)
                @mutex.synchronize do
                  require "debrew/irb"
                  IRB.start_within(binding)
                end
              end
            }

            return :ignore
          end
        end

        menu.choice(:shell) do
          puts "When you exit this shell, you will return to the menu."
          interactive_shell
        end
      end
    end
  ensure
    @mutex.unlock
  end
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Debrew.html

Spec-Zone.ru

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