Module: Narou::Mixin::OutputError

Included in:
WebWorker, Worker
Defined in:
lib/mixin/output_error.rb

Instance Method Summary collapse

Instance Method Details

#output_error(io, exception) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/mixin/output_error.rb', line 10

def output_error(io, exception)
  outputter = proc do
    io.puts "#{$@.shift}: #{exception.message} (#{exception.class})"
    $@.each do |b|
      io.puts "  from #{b}"
    end
  end
  # MEMO: report_on_exception は Ruby 2.4.0 から実装
  if Thread.respond_to?(:report_on_exception) && Thread.report_on_exception
    # report_on_exception が有効な場合は標準出力へのエラー表示はそっちに任せる。
    # silence を使うことで、標準出力には表示されないがログには記録される
    io.silence(&outputter)
  else
    outputter.call
  end
end