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?

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

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

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

jesteście najlepsi!
sickrandir
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.