90

例如,如果我遍历给定模型的所有实例并从每个实例中输出一些东西,最后,irb 仍将打印整个对象。

如果对象最终占用了数百行,那么在我看到我真正要找的东西之前还有很长的路要走。有没有办法在 Rails 控制台中禁用它?

4

4 回答 4

118

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

big_result(input); 0
于 2012-11-08T08:47:36.813 回答
104

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

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

echo 'IRB.conf[:ECHO] = false' >> $HOME/.irbrc
于 2012-11-08T07:20:43.583 回答
46

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

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

或者它也可以是一个数字,如果你想减少打字。但是在我想不到的情况下,它可能会令人困惑。

record.each do |r|
  puts r.properties
end; 0
于 2012-11-27T11:27:56.690 回答
1

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

所以这分两步起作用:

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

(不要忘记;最后的)

于 2021-02-21T14:29:40.757 回答