停止rails控制台在循环结束时打印出对象

时间:2012-11-08 07:16:31

标签: ruby-on-rails ruby console irb

如果我循环遍历给定模型的所有实例并从每个实例输出内容,最后,irb仍会打印整个对象。

如果对象最终需要数百行,那么在看到我实际需要的内容之前,这将是一个漫长的过程。有没有办法在rails控制台中禁用它?

4 个答案:

答案 0 :(得分:90)

调用conf.echo = false,它不会打印返回值。这适用于任何irb会话,而不仅仅是Rails控制台。

如果您想将其永久化,请将其添加到您的irb配置中。

echo 'IRB.conf[:ECHO] = false' >> $HOME/.irbrc

答案 1 :(得分:90)

如果您不想一般禁用回声,您也可以在一个命令行中调用多个表达式。只显示最后一个表达式的输出。

big_result(input); 0

答案 2 :(得分:31)

要暂时停止控制台打印返回值,您可以在循环或函数结束时发出nil语句,但在按返回之前。

record.each do |r|
  puts r.properties
end; nil

如果你想减少打字,它也可以是一个数字。但是在我无法想到的场景中可能会让人感到困惑。

record.each do |r|
  puts r.properties
end; 0

答案 3 :(得分:1)

这让我很沮丧,因为我使用的是 pry-rails gem,有些解决方案对我不起作用。

所以这里有两个步骤:

  1. 只需在最后一个命令的末尾添加 ; 就足以使打印输出静音。
  2. 它可能仍会打印已执行的 sql。所以为了让它静音,用
  3. 包围它
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;

(不要忘记最后的 ;