2012-11-08 11 views
55

Se, ad esempio, eseguo il ciclo di tutte le istanze di un determinato modello e restituisce qualcosa da ciascuna, alla fine, irb stamperà ancora l'intero oggetto.Arresta la console di rotaie dalla stampa dell'oggetto alla fine di un ciclo

Se l'oggetto finisce per prendere centinaia di linee, sarà molto più lungo prima di vedere cosa stavo effettivamente cercando. C'è un modo per disabilitare questo nella console di rails?

risposta

74

Se non si desidera disattivare l'eco in generale, è possibile chiamare più espressioni in una riga di comando. Verrà visualizzato solo l'output dell'ultima espressione.

big_result(input); 0 
+2

questo è in realtà quello che volevo. –

+2

Eccellente, grazie! Cosi 'semplice. – blindsnowmobile

75

Chiama conf.echo = false e non stamperà il valore restituito. Questo funziona per qualsiasi sessione irb, non solo per la console di Rails.

Nel caso in cui si desideri renderlo permanente, aggiungerlo alla configurazione irb.

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

Cosa faresti se volessi che fosse sempre il caso per impostazione predefinita? –

+0

@Accipheran Credo che metterlo negli inizializzatori Rails funzionerebbe. – lulalala

+0

Grazie per la risposta, ho scoperto che bastava lanciare la riga 'IRB.conf [: ECHO] = false', nel mio file .irbrc ci siamo presi cura di esso. Ovviamente anche l'eco di tutte le mie sessioni di registrazione, ma a me va bene. –

24

per interrompere temporaneamente la console dalla stampa i valori di ritorno si può rilasciare una dichiarazione nil alla fine del vostro ciclo o di una funzione, ma prima di premere il ritorno.

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

Oppure può essere un numero anche se si desidera ridurre la digitazione. Ma può essere fonte di confusione negli scenari, a cui non riesco a pensare.

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

Questo ha aiutato. Grazie –

Problemi correlati