Wenn ich dies auf einer Bash-Konsole mache:
cd mydir
ls -l > mydir.txt
Der Operator> erfasst die Standardeingabe und leitet sie in eine Datei um. So erhalte ich die Liste der Dateien mydir.txt
anstelle der Standardausgabe.
Gibt es eine Möglichkeit, etwas Ähnliches auf der Rails-Konsole zu tun?
Ich habe eine Ruby-Anweisung, die viele Ausdrucke erzeugt (~ 8.000 Zeilen), und ich möchte sie vollständig sehen können, aber die Konsole "merkt" sich nur die letzten 1024 Zeilen oder so. Also habe ich darüber nachgedacht, in eine Datei umzuleiten. Wenn jemand eine bessere Option kennt, bin ich ganz Ohr.
quelle
$stdout.sync=true
. Bearbeitet.$stdout.reopen("my.log", "w")
scheint eine elegantere Lösung zu sein, zu sehen unter: stackoverflow.com/a/2480439/21217$stdout = File.new('console.out', 'w')
dauert sehr lange. Ich benutze Windows. Ich bin mir nicht sicher, ob das der Grund ist!Eine schnelle einmalige Lösung:
Erstellen Sie ein JSON-Fixture:
quelle
NoMethodError: undefined method 'statements' for #<Blog:0x007fdaadbe4530>
oderundefined method 'statements' for #<ActiveRecord::Relation:0x007fdaaaf4f880>
:(statements.xml
im System gespeichert? Ich kann die Datei nicht finden.rails console
(höchstwahrscheinlich im Stammverzeichnis Ihrer App). (Zumindest war dies bei mir der Fall.)Abgesehen von Vegers Antwort gibt es eine oder mehrere Möglichkeiten, die auch viele andere zusätzliche Optionen bieten.
Öffnen Sie einfach Ihr Rails-Projektverzeichnis und geben Sie den folgenden Befehl ein:
Der Befehl tee bietet auch viele andere Optionen, die Sie überprüfen können:
quelle
rails server | tee file.txt
und es gibt keine Ausgabe an STDOUT oder die Datei. Ich denke nur, dass der Server in diesem Fall nicht startet.rails console 2>&1 | tee file.txt
. Keine Option im Tee, nur einfache Umleitung von stderr nach stdout, damit beide in Ihrer file.txt landen.pp
diese Option , um eine Ausgabe ohne Farbcodes zu erhalten.Wenn Sie den folgenden Code in Ihre Umgebungsdatei schreiben, sollte dies funktionieren.
Sie können die Protokolldatei auch mit drehen
Sie können nur aktive Datensatzvorgänge protokollieren
Auf diese Weise können Sie auch unterschiedliche Logger-Konfigurationen / -Dateien für unterschiedliche Umgebungen verwenden.
quelle
Mit Hirb können Sie festlegen, dass nur die Hirb-Ausgabe in einer Textdatei protokolliert wird. Auf diese Weise können Sie die Befehle, die Sie in das Konsolenfenster eingeben, weiterhin sehen, und nur die Modellausgabe wird in die Datei übernommen.
Aus der Hirb-Readme :
Obwohl Ansichten standardmäßig in STDOUT gedruckt werden, können sie leicht geändert werden, um überall zu schreiben:
quelle
Verwenden Sie Hirb . Es werden automatisch alle Ausgaben in irb angezeigt, die länger als ein Bildschirm sind. Fügen Sie dies in eine Konsolensitzung ein, um diese Arbeit zu sehen:
Weitere Informationen dazu finden Sie in diesem Beitrag .
quelle
Versuchen Sie es mit dem
script
Dienstprogramm, wenn Sie ein Unix-basiertes Betriebssystem verwenden.script -c "rails runner -e development lib/scripts/my_script.rb" report.txt
Das hat mir geholfen, die sehr, sehr lange Ausgabe eines Rails-Runner-Skripts einfach in eine Datei zu erfassen.
Ich habe versucht, die Umleitung zu einer Datei zu verwenden, aber sie wurde erst am Ende des Skripts geschrieben.
Das hat mir nicht geholfen, da ich nur wenige interaktive Befehle in meinem Skript hatte.
Dann habe ich nur
script
dierails runner
In-Script-Sitzung verwendet und dann ausgeführt, aber sie hat nicht alles geschrieben. Dann fand ich diesscript -c "runner command here" output_file
und es speicherte die gesamte Ausgabe wie gewünscht. Dies war auf Ubuntu 14.04 LTSVerweise:
/ubuntu/290322/how-to-get-and-copy-a-too-long-output-completely-in-terminal#comment1668695_715798
Schreiben der Ruby-Konsolenausgabe in eine Textdatei
quelle