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.