【发布时间】:2012-10-28 08:50:21
【问题描述】:
例如,如果我遍历给定模型的所有实例并从每个实例中输出一些东西,最后,irb 仍将打印整个对象。
如果对象最终占用了数百行,那么在我看到我真正要找的东西之前还有很长的路要走。有没有办法在 Rails 控制台中禁用它?
【问题讨论】:
标签: ruby-on-rails ruby console irb
例如,如果我遍历给定模型的所有实例并从每个实例中输出一些东西,最后,irb 仍将打印整个对象。
如果对象最终占用了数百行,那么在我看到我真正要找的东西之前还有很长的路要走。有没有办法在 Rails 控制台中禁用它?
【问题讨论】:
标签: ruby-on-rails ruby console irb
如果您一般不想禁用回显,也可以在一个命令行中调用多个表达式。只会显示最后一个表达式的输出。
big_result(input); 0
【讨论】:
big_result(input); nil
调用conf.echo = false,它不会打印返回值。这适用于任何 irb 会话,而不仅仅是 Rails 控制台。
如果您想使其永久化,请将其添加到您的 irb 配置中。
echo 'IRB.conf[:ECHO] = false' >> $HOME/.irbrc
【讨论】:
IRB.conf[:ECHO] = false 就可以了。当然,这也会在我所有的 irb 会话中产生回声,但我可以接受。
要暂时停止控制台打印返回值,您可以在循环或函数结束时发出nil 语句,但在按下返回之前。
record.each do |r|
puts r.properties
end; nil
如果你想减少打字,它也可以是一个数字。但它可能会在我想不到的场景中令人困惑。
record.each do |r|
puts r.properties
end; 0
【讨论】:
这让我很沮丧,因为我使用的是pry-rails gem,有些解决方案对我不起作用。
以下是分两步奏效的方法:
; 添加到最后一个命令的末尾就足以使打印输出静音。ActiveRecord::Base.logger.silence do
# code here
end
如果你想运行这个
User.all do |user|
puts user.first_name
end
那么这将确保没有其他内容打印到屏幕上:
ActiveRecord::Base.logger.silence do
User.all do |user|
puts user.first_name
end
end;
(不要忘记最后的;)
【讨论】: