class Dynflow::Actor::BacktraceCollector
Constants
- CONCURRENT_RUBY_LINE
- SIDEKIQ_LINE
Public Class Methods
current_actor_backtrace()
click to toggle source
# File lib/dynflow/actor.rb, line 63 def current_actor_backtrace Thread.current[:_dynflow_actor_backtrace] || [] end
full_backtrace(backtrace)
click to toggle source
# File lib/dynflow/actor.rb, line 67 def full_backtrace(backtrace) filter_backtrace((backtrace || []) + current_actor_backtrace) end
with_backtrace(backtrace) { || ... }
click to toggle source
# File lib/dynflow/actor.rb, line 55 def with_backtrace(backtrace) previous_actor_backtrace = Thread.current[:_dynflow_actor_backtrace] Thread.current[:_dynflow_actor_backtrace] = backtrace yield ensure Thread.current[:_dynflow_actor_backtrace] = previous_actor_backtrace end
Private Class Methods
filter_backtrace(backtrace)
click to toggle source
takes an array of backtrace lines and replaces each chunk
# File lib/dynflow/actor.rb, line 84 def filter_backtrace(backtrace) backtrace.map { |line| filter_line(line) } .chunk_while { |l1, l2| l1 == l2} .map(&:first) end
filter_line(line)
click to toggle source
# File lib/dynflow/actor.rb, line 73 def filter_line(line) if %w[concurrent-ruby gems/logging actor.rb].any? { |pattern| line.include?(pattern) } CONCURRENT_RUBY_LINE elsif line.include?('lib/sidekiq') SIDEKIQ_LINE else line end end