如何隐藏窥探范围?

How to hide pry scope?

有时,当我在规范中打开一个 binding.pry 会话时,它会显示 shell 中的范围太长,如下所示,并占用所有 shell 行:

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

层数太深时shell就没法用了,这个作用域信息就没有意义了。我怎样才能将这个范围隐藏到 pry(#hidden_info>)> 之类的东西,并且仍然有以前范围的方法和变量?

撬提示可以是configured in a variety of ways. The prompt value can take any arbitrary form。 (限制是您可以在 Ruby 内做的任何事情)

您可以看到 DEFAULT_PROMPT 个值 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?}* "
 }
]

在您的情况下,您可能希望将以下内容放入 ~/.pryrc,然后重新启动任何窥探会话:

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?}* "
 }
]

这将删除 Pry.view_clip(target_self) 调用,该调用将从提示中删除 class。

还有配置撬提示的示例here on Stack Overflow