2015-12-04 1 views
4

Y a-t-il un moyen de réduire la verbosité des rapports d'erreurs dans la console Rails? Plus précisément, désactiver l'affichage de la trace de la pile? Cela ne sert à rien la plupart du temps, et carrément énervant quand je souffre d'un cas de doigts stupides.Désactiver l'affichage de la trace de la pile dans la console Rails

Lorsque je tape quelque chose comme:

MyModel.vtrsyr 

Je ne ai pas besoin d'une trace de la pile pour me dire qu'il n'y a pas de méthode 'de vtrsyr'

Répondre

6

L'important est que l'utilisation de la console rails RIR, et a accès à la gamme des options de configuration RIR

$ rails c 
Loading development environment (Rails 4.2.0) 
>> conf 
=> conf.ap_name="irb" 
conf.auto_indent_mode=false 
conf.back_trace_limit=16 
. 
. 
. 

et voilà: conf.back_trace_limit. Alors:

conf.back_trace_limit = 0 

désactive efficacement la trace pour la session en cours, et la sortie sera agréable et concise:

>> MyModel.gnu 
NoMethodError: undefined method `gnu' for MyModel:Class 

ou

>> obj.do_defective_math 
ZeroDivisionError: divided by 0 

Pour rendre les choses un peu plus pratique, une fonction peut être définie dans ~/.irbrc. Quelque chose comme:

def toggle_trace 
    if conf.back_trace_limit > 0 
    conf.back_trace_limit = 0 
    else 
    conf.back_trace_limit = IRB.conf[:BACK_TRACE_LIMIT] 
    end 
end 

qui peut être appelé une session de console pour désactiver ou activer la trace de retour au besoin

+0

C'est génial. Notez que pour ce faire dans Rails Server, vous pouvez réaliser ceci avec: http://stackoverflow.com/questions/29169059/rails-backtrace-silencers-do-not-work-while-filters-do Voir mes notes aux réponses - J'ai dû combiner 2 solutions pour finalement arrêter le code source de sortie de déchets inutile-référençant que je ne maintiens pas. – JosephK