2012-11-08 14 views
7

Sono in esecuzione di un javascript all'interno di un rotaie 3 applicazione utilizzando therubyracer e v8traccia stack da JavaScript errore dal therubyracer/v8 in Rails 3

Se qualcosa va storto, il messaggio di errore viene inviato a me via e-mail attraverso la consueta rails 3 processo di notifica delle eccezioni.

Tuttavia, il messaggio di errore che torno è piuttosto vago e la traccia dello stack non va nel file javascript stesso. Questo è comprensibile, ma rende piuttosto difficile il debug. Ecco un esempio:

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' 

C'è un modo per esporre lo stacktrace javascript in modo che quando viene generata un'eccezione in modo che io posso dire quello che la linea all'interno del JavaScript è Borking? (Per lo meno, ottenere il numero della linea)

+0

Hai mai trovato una soluzione a questo? – andygeers

risposta

0

Penso che si possa utilizzare la classe di errore V8, prova a fare questo

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 

Per essere onesti, non sono se questo funzionerà ma dare una prova