Zatrzymaj konsolę szyn przed wydrukowaniem obiektu na końcu pętli

86

Jeśli, powiedzmy, przejdę w pętli przez wszystkie instancje danego modelu i wyprowadzę coś z każdego, na końcu irb nadal wydrukuje cały obiekt.

Jeśli obiekt zajmie setki linii, minie dużo czasu, zanim zobaczę, czego tak naprawdę szukałem. Czy jest sposób, aby to wyłączyć w konsoli railsów?

dsp_099
źródło

Odpowiedzi:

112

Jeśli nie chcesz generalnie wyłączać echa, możesz również wywołać wiele wyrażeń w jednym wierszu poleceń. Zostanie wyświetlone tylko dane wyjściowe ostatniego wyrażenia.

big_result(input); 0
aef
źródło
3
właśnie tego chciałem.
dsp_099
4
Często to robiębig_result(input); nil
nosem
102

Zadzwoń conf.echo = falsei nie wydrukuje wartości zwracanej. Działa to dla każdej sesji irb, nie tylko konsoli Railsów.

Jeśli chcesz, aby był trwały, dodaj go do swojej konfiguracji irb.

echo 'IRB.conf[:ECHO] = false' >> $HOME/.irbrc
lulalala
źródło
Co byś zrobił, gdybyś chciał, aby zawsze tak było domyślnie?
Peter Berg
@Accipheran Myślę, że umieszczenie go w inicjalizatorach Railsów zadziała.
lulalala
Dzięki za odpowiedź, stwierdziłem, że samo rzucenie linii IRB.conf[:ECHO] = falsew moim pliku .irbrc załatwiło sprawę. To oczywiście wyłącza echo we wszystkich moich sesjach irb, ale nie przeszkadza mi to.
Peter Berg
41

Aby tymczasowo powstrzymać konsolę przed wypisywaniem zwracanych wartości, możesz wydać nilinstrukcję na końcu pętli lub funkcji, ale przed naciśnięciem return.

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

Lub też może to być liczba, jeśli chcesz ograniczyć pisanie. Ale może to być mylące w scenariuszach, których nie mogę wymyślić.

record.each do |r|
  puts r.properties
end; 0
RajaRaviVarma
źródło
jesteście najlepsi!
sickrandir