pry-byebug
pry-byebug copied to clipboard
pry-backtrace does not filter out gems / ruby code.
Take a look at result of pry-backtrace
It contains 2 useful lines of code, hidden within 30 something lines.
[5] pry(Settings)> pry-backtrace
Backtrace:
--
/home/marko/.gem/ruby/2.3.1/gems/pry-byebug-3.4.2/lib/byebug/processors/pry_processor.rb:115:in `block in resume_pry'
/home/marko/.gem/ruby/2.3.1/gems/pry-byebug-3.4.2/lib/byebug/processors/pry_processor.rb:28:in `block in run'
/home/marko/.gem/ruby/2.3.1/gems/pry-byebug-3.4.2/lib/byebug/processors/pry_processor.rb:27:in `catch'
/home/marko/.gem/ruby/2.3.1/gems/pry-byebug-3.4.2/lib/byebug/processors/pry_processor.rb:27:in `run'
/home/marko/.gem/ruby/2.3.1/gems/pry-byebug-3.4.2/lib/byebug/processors/pry_processor.rb:111:in `resume_pry'
/home/marko/.gem/ruby/2.3.1/gems/pry-byebug-3.4.2/lib/byebug/processors/pry_processor.rb:63:in `at_line'
/home/marko/.gem/ruby/2.3.1/gems/byebug-9.0.6/lib/byebug/context.rb:96:in `at_line'
/data/sites/scripts/sw_scripts/ruby/common/lib/settings.rb:11:in `set_sw_dir'
/data/sites/scripts/sw_scripts/ruby/gallery/spec/lib/html/support/collection_page_creator.rb:6:in `block (2 levels) in <top (required)>'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:443:in `instance_exec'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:443:in `instance_exec'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:350:in `run'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:507:in `block in run_owned_hooks_for'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:506:in `each'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:506:in `run_owned_hooks_for'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:593:in `block in run_example_hooks_for'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:592:in `reverse_each'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:592:in `run_example_hooks_for'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:462:in `run'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:490:in `run_before_example'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:253:in `block in run'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:496:in `block in with_around_and_singleton_context_hooks'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:453:in `block in with_around_example_hooks'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:464:in `block in run'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:602:in `run_around_example_hooks_for'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:464:in `run'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:453:in `with_around_example_hooks'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:496:in `with_around_and_singleton_context_hooks'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:251:in `run'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:627:in `block in run_examples'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:623:in `map'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:623:in `run_examples'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:589:in `run'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:590:in `block in run'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:590:in `map'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:590:in `run'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:113:in `block (3 levels) in run_specs'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:113:in `map'
/home/marko/.gem/ruby/2.3.1/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:113:in `block (2 levels) in run_specs'
To fix, just filter out all links starting with ruby's gem path.
pry-backtrace
is a command defined in gem pry
, not pry-byebug
you can modify the file lib/pry/commands/pry_backtrace.rb
in pry
# def process
# _pry_.pager.page text.bold('Backtrace:') << "\n--\n" << _pry_.backtrace.join("\n")
# end
def process
_pry_.pager.page text.bold('Backtrace:') << "\n--\n" << _pry_.backtrace.reject { |line| /gems/ === line }.join("\n")
end
Actually the command is defined in byebug
gem:
def print_backtrace
bt = prc('frame.line', (0...context.stack_size)) do |_, index|
Frame.new(context, index).to_hash
end
print(bt)
end
If you monkey patch it to the code below, you'll get what you want:
def print_backtrace
relevant_context = (0...context.stack_size).reject { |index| context.frame_file(index) =~ /(.gem\/ruby)|(.rubies\/ruby)/ }
bt = prc('frame.line', relevant_context) do |index, _|
Frame.new(context, index).to_hash
end
print(bt)
end
Actually the command is defined in
byebug
gem:def print_backtrace bt = prc('frame.line', (0...context.stack_size)) do |_, index| Frame.new(context, index).to_hash end print(bt) end
If you monkey patch it to the code below, you'll get what you want:
def print_backtrace relevant_context = (0...context.stack_size).reject { |index| context.frame_file(index) =~ /(.gem\/ruby)|(.rubies\/ruby)/ } bt = prc('frame.line', relevant_context) do |index, _| Frame.new(context, index).to_hash end print(bt) end
hey @leandrogoe, I tried monkey patching your code to the byebug gem in the where.rb script, and I saw no difference in my output. Is there something else one has to do in order to get the gem modifications to work?
Actually the command is defined in
byebug
gem:def print_backtrace bt = prc('frame.line', (0...context.stack_size)) do |_, index| Frame.new(context, index).to_hash end print(bt) end
If you monkey patch it to the code below, you'll get what you want:
def print_backtrace relevant_context = (0...context.stack_size).reject { |index| context.frame_file(index) =~ /(.gem\/ruby)|(.rubies\/ruby)/ } bt = prc('frame.line', relevant_context) do |index, _| Frame.new(context, index).to_hash end print(bt) end
hey @leandrogoe, I tried monkey patching your code to the byebug gem in the where.rb script, and I saw no difference in my output. Is there something else one has to do in order to get the gem modifications to work?
@fierytortilla it's not part of this gem. It's on byebug gem instead.
module Byebug
module Backtrace
def print_backtrace
# your code
end
end
end