2012-11-08 8 views
7

Używam niektóre javascript wewnątrz Rails 3 app używając therubyracer i V8Ślad stosu z javascript błędu z therubyracer/v8 w szynach 3

Jeśli coś pójdzie nie tak, komunikat o błędzie zostanie wysłana do mnie za pośrednictwem poczty elektronicznej przez zwykłe 3 proces powiadomienia o wyjątkach.

Jednak komunikat o błędzie, który otrzymuję, jest dość nieprecyzyjny, a ślad stosu nie przechodzi do samego pliku javascript. Jest to zrozumiałe, ale bardzo utrudnia debugowanie. Oto przykład:

V8::JSError: Cannot read property '0' of undefined 
backtrace: 

lib/libraryname.rb:32:in `function_that_calls_v8' 
lib/libraryname.rb:18:in `fetch_and_update' 
app/models/listing.rb:34:in `fetch' 

Czy istnieje sposób mogę wystawiać javascript StackTrace tak, że gdy jest wyjątek tak, że mogę powiedzieć, co linia wewnątrz JavaScript jest borking? (Co najmniej, uzyskać numer wiersza)

+0

Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? – andygeers

Odpowiedz

0

myślę, że można użyć klasy V8 o błędzie, spróbuj robić to

begin 
    #normal V8 code 


rescue V8::Error => error 
    error.value #the JavaScript value passed to the `throw` statement 
    error.cause #the underlying error (if any) that triggered this error to be raised 
    error.javascript_backtrace #the complete JavaScript stack at the point this error was thrown 
    #use these values and send them to the exception system (however that happenS) 
end 

Szczerze mówiąc, nie jestem czy to będzie działać, ale dać spróbuj

Powiązane problemy