3

Sometimes when I open a binding.pry session in a spec it shows me a too long scope in the shell like the following and takes all the shell line:

[3] pry(#<RSpec::ExampleGroups::Scope::AfterSeed::BehavesLikeAnExportableToExcelModel::WhenImportingFromSpreadsheet::AXlsxFile>)>

It turns impossible to use the shell when the level is too deep, and this scope information becomes pointless. How can I hide this scope to something like pry(#hidden_info>)> and still have the methods and variables from the previous scope?

anothermh
  • 9,815
  • 3
  • 33
  • 52
intmarinoreturn0
  • 300
  • 1
  • 16

1 Answers1

1

The pry prompt can be configured in a variety of ways. The prompt value can take any arbitrary form. (the limit is whatever you can do in Ruby)

You can see the DEFAULT_PROMPT values in the rdocs:

[
 proc { |target_self, nest_level, pry|
   "[#{pry.input_array.size}] #{pry.config.prompt_name}(#{Pry.view_clip(target_self)})#{":#{nest_level}" unless nest_level.zero?}> "
 },

 proc { |target_self, nest_level, pry|
   "[#{pry.input_array.size}] #{pry.config.prompt_name}(#{Pry.view_clip(target_self)})#{":#{nest_level}" unless nest_level.zero?}* "
 }
]

In your case, you would probably want to put the following into ~/.pryrc and then restart any pry sessions:

Pry.config.prompt = [
 proc { |target_self, nest_level, pry|
   "[#{pry.input_array.size}] #{pry.config.prompt_name}#{":#{nest_level}" unless nest_level.zero?}> "
 },

 proc { |target_self, nest_level, pry|
   "[#{pry.input_array.size}] #{pry.config.prompt_name}#{":#{nest_level}" unless nest_level.zero?}* "
 }
]

This removes the Pry.view_clip(target_self) call which will clip the class from the prompt.

There are examples here on Stack Overflow for configuring the pry prompt as well.

anothermh
  • 9,815
  • 3
  • 33
  • 52