class Backtrace

Backtrace as a string.

Author

Yegor Bugayenko (yegor256@gmail.com)

Copyright

Copyright © 2018 Yegor Bugayenko

License

MIT

Public Class Methods

exec(swallow: false, log: nil, mine: '') { || ... } click to toggle source
# File lib/backtrace.rb, line 47
def self.exec(swallow: false, log: nil, mine: '')
  yield
rescue StandardError => e
  trace = Backtrace.new(e, mine: mine).to_s
  if log.nil? || !log.respond_to?(:error)
    puts trace
  else
    log.error(trace)
  end
  raise e unless swallow
end
new(exp, mine: '') click to toggle source
# File lib/backtrace.rb, line 30
def initialize(exp, mine: '')
  @exp = exp
  @mine = (mine.is_a?(Regexp) ? mine : Regexp.new(Regexp.quote(mine)))
end

Public Instance Methods

to_s() click to toggle source
# File lib/backtrace.rb, line 35
def to_s
  [
    @exp.class.name,
    ': ',
    @exp.message,
    "\n\t",
    @exp.backtrace.reverse
      .drop_while { |t| @mine.match(t).nil? }
      .reverse.join("\n\t")
  ].join
end