2009-10-27 14 views
11

Sto distribuendo un'applicazione Sinatra utilizzando il passeggero. L'app distribuita funziona, ma non completamente: alcuni percorsi funzionano bene, altri semplicemente rendono una pagina vuota. Io non riesco a trovare grandi differenze tra gli itinerari che funzionano e gli itinerari che non lo fanno, e io non riesco a rintracciare eventuali errori ..Problemi di debug dell'applicazione Sinatra in produzione

Handlers

ho definito le not_found e di errore gestori come segue:

not_found do 
    '404. Bummer!' 
end 

error do 
    'Nasty error: ' + env['sinatra.error'].name 
end 

questi funzionano bene sulla mia macchina locale, sia in fase di sviluppo e di produzione, ma non ho mai visto questi vengono sul server.

Apache Logs

Quando access.log e ho la coda di Apache ha colpito uno dei percorsi interrotti, vedo un 500: rack_hoptoad

helpers [27/Oct/2009:15:54:59 -0400] "GET /admin/member_photos/photos HTTP/1.1" 500 20 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3" 

Ho anche installato e configurato il middleware rack_hoptoad nel mio config.ru, ma nessuna eccezione lo sta facendo nello hoptoad.

# Send exceptions to hoptoad 
require 'rack_hoptoad' 
use Rack::HoptoadNotifier, 'MY_API_KEY' 

accedendo

Ho installato accedendo in questo modo ..

set :raise_errors => true 
set :logging, true 

log = File.new("log/sinatra.log", "a+") 
STDOUT.reopen(log) 
STDERR.reopen(log) 

require 'logger' 
configure do 
    LOGGER = Logger.new("log/sinatra.log") 
end 

helpers do 
    def logger 
    LOGGER 
    end 
end 

Questa configurazione mi permette di chiamare logger.info nei miei percorsi, che funziona a livello locale e su il server per i percorsi di lavoro, ma i percorsi interrotti non arrivano abbastanza lontano da chiamare logger.info.

Cosa fare?

Qualche idea su come posso vedere che cosa causa gli errori 500? Grazie per qualsiasi aiuto!

+0

"Stackies"? :-) – SLaks

+1

+1 per Stackies! – DigitalRoss

+0

Hai provato a semplici app su httpd? come le app "Quanto in basso nel mondo". prendi semplicemente "/" fai; 'Come in basso mondo'; fine In primo luogo controllare, quindi le prossime app. Controlla le tue semplici app su httpd e sul file di configurazione. a proposito, penso che non si possano ottenere alcuni registri https su sinatra. – tknv

risposta

6

Vorrei provare a utilizzare il middleware Rack :: ShowExceptions per cercare di individuare il problema. Nel vostro config.ru aggiungere queste due righe prima della chiamata corsa:

require 'rubygems' 
require 'your-app' 

use Rack::ShowExceptions 

run YourApp 

Questo dovrebbe catturare e visualizzare il backtrace per tutte le eccezioni che si verificano in rack o nella vostra app. Questo dovrebbe darti maggiori dettagli su cui lavorare, almeno questa sarebbe la speranza.

1

Forse c'è qualcosa di sbagliato nella configurazione del registro?

Reindirizzare STDERR quando si esegue il server Sinatra in modo da poterlo leggere. Ad esempio:

ruby myapp.rb -p 1234 > log/app.log 2>&1 
0

Grazie per le risposte, ma non ho finito per aver bisogno di usarle. Inizialmente distribuivo l'app in un sub-URI configuration. Quando ho distribuito l'app sul proprio sottodominio, invece, i problemi sono andati via.

Quindi ..Io non sono davvero sicuro di quale fosse il problema, ma per liberarsi di questa linea è la mia configurazione di Apache per il sito è quello che risolve le cose:

Redirect permanent/https://www.example.org/admin/member_photos/ 
Problemi correlati