2013-07-15 16 views
8

Sto utilizzando Ruby on Rails 4 su Ruby 1.9.3. Quando si verifica un errore durante un'attività rake, ottengo una traccia dello stack molto bella.Abilita il dump dello stack sull'eccezione nella console di Rails 4

Quando però faccio qualcosa nella mia console delle rotaie (leva) che fa scattare un'eccezione, riesco solo a vedere il messaggio di errore e la riga di codice che l'ha attivata (il più delle volte si trova da qualche parte nel nucleo delle rotaie)).

C'è un modo per abilitare questi dump di stack nella console?

risposta

22

mi sono trovato una soluzione.

A quanto pare, avevo bisogno del comando wtf? che viene fornito con leva.

[7] project » p.known_attributes 
NoMethodError: undefined method `foo' for #<Bar:0x007f871fd12a38> 
from /[...]/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:436:in `method_missing' 

[8] project » wtf? 
Exception: NoMethodError: undefined method `foo' for #<Bar:0x007f871fd12a38> 
-- 
[... stack dump ...] 

[9] project » 
+0

Questo mi rende felice –

1

Quando c'è un errore nella console si dovrebbe vedere qualcosa di simile

$ rails c 
Loading development environment (Rails 4.0.0) 
irb(main):001:0> no_method 
NameError: undefined local variable or method `no_method' for main:Object 
    from (irb):1 
    from /Users/michal/Projects/tennisliga/.gems/gems/railties-4.0.0/lib/rails/commands/console.rb:90:in `start' 
    from /Users/michal/Projects/tennisliga/.gems/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in `start' 
    from /Users/michal/Projects/tennisliga/.gems/gems/railties-4.0.0/lib/rails/commands.rb:64:in `<top (required)>' 
    from bin/rails:4:in `require' 
    from bin/rails:4:in `<main>' 

Qual è il problema con esso? Non vedi la traccia dello stack?

EDIT: Se stai usando leva e vorrebbe vedere di più traccia dello stack, fare riferimento a pry wiki esempio Corto (visualizza tutte le linee)

Pry.config.exception_handler = proc do |output, exception, _pry_| 
    output.puts "#{exception}" 
    output.puts "#{exception.backtrace}" 
end 
+0

Quando faccio esattamente questo, Quello che sto ricevendo è proprio 'NameError: undefined variabile locale o un metodo 'no_method' per principale: Oggetto da (leva): 1: in '

''. Nessun deposito di discarica. –

+0

Ho appena visto ora che la leva potrebbe avere una mano in questo. Potrebbe essere possibile? –

+0

Hai impostato la leva come console predefinita? –