如何隐藏撬范围?

时间:2017-11-09 03:03:31

标签: ruby-on-rails pry

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

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

当级别太深时,无法使用shell,并且此范围信息变得毫无意义。如何将此范围隐藏到pry(#hidden_info>)>之类的内容,并且仍然具有上一个范围中的方法和变量?

1 个答案:

答案 0 :(得分:1)

pry提示符可以是configured in a variety of ways。提示值可以take any arbitrary form。 (限制是你在Ruby中可以做的任何事情)

您可以看到DEFAULT_PROMPTin 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会话:

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)调用,该调用将从提示中剪辑该类。

还有用于配置pry提示符的示例here on Stack Overflow