Halten Sie die Rails-Konsole davon ab, das Objekt am Ende einer Schleife auszudrucken

84

Wenn ich beispielsweise alle Instanzen eines bestimmten Modells durchlaufe und von jedem etwas ausführe, druckt irb am Ende immer noch das gesamte Objekt.

Wenn das Objekt Hunderte von Zeilen benötigt, ist es ein langer Weg, bis ich sehe, wonach ich tatsächlich gesucht habe. Gibt es eine Möglichkeit, dies in der Rails-Konsole zu deaktivieren?

dsp_099
quelle

Antworten:

109

Wenn Sie das Echo im Allgemeinen nicht deaktivieren möchten, können Sie auch mehrere Ausdrücke in einer Befehlszeile aufrufen. Es wird nur die Ausgabe des letzten Ausdrucks angezeigt.

big_result(input); 0
aef
quelle
3
das ist eigentlich was ich wollte.
dsp_099
3
Ich mache oftbig_result(input); nil
nroose
100

Rufen Sie an conf.echo = falseund der Rückgabewert wird nicht gedruckt. Dies funktioniert für jede IRB-Sitzung, nicht nur für die Rails-Konsole.

Wenn Sie es dauerhaft machen möchten, fügen Sie es Ihrer irb-Konfiguration hinzu.

echo 'IRB.conf[:ECHO] = false' >> $HOME/.irbrc
lulalala
quelle
Was würden Sie tun, wenn dies standardmäßig immer der Fall sein soll?
Peter Berg
@Accipheran Ich denke, es in die Rails-Initialisierer zu setzen würde funktionieren.
Lulalala
Vielen Dank für die Antwort, ich habe tatsächlich festgestellt, dass das IRB.conf[:ECHO] = falseeinfache Werfen der Zeile in meiner .irbrc-Datei sich darum gekümmert hat. Das schaltet natürlich auch das Echo in all meinen IRB-Sessions aus, aber damit bin ich einverstanden.
Peter Berg
40

Um die Konsole vorübergehend daran zu hindern, die Rückgabewerte zu drucken, können Sie nilam Ende Ihrer Schleife oder Funktion, jedoch vor dem Drücken der Eingabetaste, eine Anweisung ausgeben .

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

Oder es kann auch eine Zahl sein, wenn Sie die Eingabe reduzieren möchten. Aber es kann in Szenarien verwirrend sein, an die ich nicht denken kann.

record.each do |r|
  puts r.properties
end; 0
RajaRaviVarma
quelle
Du bist der beste!
sickrandir