class Hanami::Events::CloudPubsub::ThreadInspector
Generate prettier backtraces for inspection
Attributes
backtrace[R]
thread[R]
Public Class Methods
new(thread)
click to toggle source
# File lib/hanami/events/cloud_pubsub/thread_inspector.rb, line 10 def initialize(thread) @thread = thread @backtrace = thread.backtrace end
Public Instance Methods
inspect()
click to toggle source
# File lib/hanami/events/cloud_pubsub/thread_inspector.rb, line 19 def inspect thread.inspect end
to_s()
click to toggle source
# File lib/hanami/events/cloud_pubsub/thread_inspector.rb, line 15 def to_s "║ #{thread.inspect}\n" + pretty_backtrace end
Private Instance Methods
colorize(text, color_code)
click to toggle source
# File lib/hanami/events/cloud_pubsub/thread_inspector.rb, line 40 def colorize(text, color_code) "\e[#{color_code}m#{text}\e[0m" end
join_backtrace(pretty_backtrace)
click to toggle source
# File lib/hanami/events/cloud_pubsub/thread_inspector.rb, line 50 def join_backtrace(pretty_backtrace) pretty_backtrace.map! { |line| "║\t#{line}" } pretty_backtrace << '║' pretty_backtrace.join("\n") end
pretty_backtrace()
click to toggle source
# File lib/hanami/events/cloud_pubsub/thread_inspector.rb, line 25 def pretty_backtrace pretty_backtrace = backtrace.map do |call| parts = call.match(/^(?<file>.+):(?<line>\d+):in `(?<code>.*)'$/) if parts file = parts[:file].sub(/^#{Regexp.escape(File.join(Dir.getwd, ''))}/, '') pretty_line(file, parts) else colorize(call, 31) end end join_backtrace(pretty_backtrace) end
pretty_line(file, parts)
click to toggle source
# File lib/hanami/events/cloud_pubsub/thread_inspector.rb, line 44 def pretty_line(file, parts) "#{colorize(file, 36)} #{colorize('(', 37)}" \ "#{colorize(parts[:line], 32)}#{colorize('): ', 37)} " \ "#{colorize(parts[:code], 31)}" end