2012-04-05 9 views
3

Ich habe ein rekursives Objekt (Cucumber :: Rails :: World.scenario), das ich untersuchen möchte (um die Tags des aktuellen Szenarios zu finden). scenario.inspect nie endet, und pp scenario druckt so schnell, dass sogar mit einer schnellen Reihe von Ctrl - c es etwa dreitausend Zeilen füllt. Wie kann ich die Ausgabe begrenzen?Wie kann man die Ausgabe eines Ruby `pp` Calls begrenzen?

Antwort

0

Einfügen gets an bestimmten Punkten (zwischen kleinen Stücken von pp). Dann können Sie langsam durchgehen, indem Sie nach jedem Stück eingeben eingeben.

3

Verwenden pretty_inspect, um es als String zu bekommen, dann werden nur die ersten n Zeichen erhalten:

pp_output = scenario.pretty_inspect; nil 
puts pp_output[0..n]; nil 

Hinweis die Hinter nil s Ursache IRb den Rückgabewert anzuzeigen nil anstatt das gesamte Objekt, das aufräumt im Wesentlichen ausgeben.

Für noch mehr Flexibilität, es in einer Datei speichern:

File.open "pp-output.txt", "w" do |f| 
    f.puts scenario.pretty_inspect 
end 

Dann im Pager Ihrer Wahl anzuzeigen:

$ less pp-output.txt 
Verwandte Themen