Impedisci alla console di rails di stampare l'oggetto alla fine di un ciclo


86

Se, ad esempio, eseguo un ciclo attraverso tutte le istanze di un dato modello e produco qualcosa da ciascuna, alla fine irb stamperà comunque l'intero oggetto.

Se l'oggetto finisce per prendere centinaia di righe, ci vorrà molto tempo prima di vedere cosa stavo effettivamente cercando. C'è un modo per disabilitarlo nella console di rails?

Risposte:


112

Se non vuoi disabilitare l'eco in generale, puoi anche chiamare più espressioni in una riga di comando. Verrà visualizzato solo l'output dell'ultima espressione.

big_result(input); 0

3
questo è effettivamente quello che volevo.
dsp_099

4
Lo faccio spessobig_result(input); nil
annuisco

102

Chiama conf.echo = falsee non stamperà il valore restituito. Funziona per qualsiasi sessione irb, non solo per la console Rails.

Nel caso in cui desideri renderlo permanente, aggiungilo alla tua configurazione irb.

echo 'IRB.conf[:ECHO] = false' >> $HOME/.irbrc

Cosa faresti se volessi che sia sempre così per impostazione predefinita?
Peter Berg

@Accipheran Immagino che inserendolo negli inizializzatori di Rails funzionerebbe.
lulalala

Grazie per la risposta, in realtà ho scoperto che è stato sufficiente lanciare la riga IRB.conf[:ECHO] = falsenel mio file .irbrc. Questo ovviamente spegne anche l'eco in tutte le mie sessioni irb, ma a me va bene.
Peter Berg

41

Per interrompere temporaneamente la stampa dei valori restituiti dalla console è possibile emettere nilun'istruzione alla fine del ciclo o della funzione, ma prima di premere il tasto invio.

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

Oppure può essere anche un numero, se vuoi ridurre la digitazione. Ma può creare confusione negli scenari, a cui non riesco a pensare.

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

sei il migliore!
Sickrandir
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.