2013-07-15 15 views
8

Ich verwende Ruby on Rails 4 auf Ruby 1.9.3. Wenn während eines Rake-Tasks ein Fehler auftritt, erhalte ich einen sehr schönen Stack-Trace.Aktivieren Sie Stack-Dump auf Ausnahme in Rails 4 Konsole

Wenn ich jedoch etwas in meiner Rails-Konsole (PRY) mache, das eine Ausnahme auslöst, sehe ich nur die Fehlermeldung und die eine Codezeile, die sie ausgelöst hat (meistens im Kern der Rails)).

Gibt es eine Möglichkeit, diese Stapelspeicherauszüge in der Konsole zu aktivieren?

Antwort

22

ich mir eine Lösung gefunden.

Anscheinend brauchte ich den Befehl wtf?, der mit hebeln kommt.

[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

Das macht mich glücklich –

1

Wenn es ein Fehler in der Konsole sollten Sie so etwas wie diese

$ 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>' 

sehen, was damit das Problem? Sie sehen den Stack-Trace nicht?

EDIT: Wenn Sie hebeln verwenden und würde gerne mehr Stack-Trace, um zu sehen, siehe pry wiki kurzes Beispiel (Zeige alle Linien)

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

Wenn ich genau das tun, was ich immer nur 'Nameerror: undefined lokale Variable oder Methode 'no_method' für Haupt: Object aus (hebeln): 1: in '

''. Kein Stapelspeicherauszug. –

+0

Ich sehe gerade jetzt, dass hacken kann eine Hand in diesem. Konnte das möglich sein? –

+0

Haben Sie als Standard-Konsole einen Hebel? –