2009-10-27 8 views
11

Estoy implementando una aplicación Sinatra con pasajero. La aplicación implementada está funcionando, pero no del todo: algunos caminos funcionan bien, otros simplemente muestran una página en blanco. Parece que no puedo encontrar ninguna diferencia importante entre las rutas que funcionan y las rutas que no lo hacen, y me parece que no puede localizar a cualquier error ..Problemas para depurar la aplicación Sinatra en producción

Manipuladores

he definido los not_found y manejadores de error de la siguiente manera:

not_found do 
    '404. Bummer!' 
end 

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

estos funcionan bien en mi máquina local, tanto en el desarrollo y la producción, pero nunca veo estos vienen en el servidor.

los registros de Apache

Cuando access.log y de que la cola de Apache golpeó a uno de los caminos rotos, veo 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" 

También he instalé y configuré el middleware rack_hoptoad en mi config.ru, pero no hay excepciones en hoptoad.

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

registro

He creado el registro como tal ..

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 

Esta configuración permite que llame a logger.info dentro de mis rutas, que funciona a nivel local y en el servidor para las rutas de trabajo, pero las rutas rotas no llegan lo suficientemente lejos como para llamar a logger.info.

¿Qué hacer?

¿Alguna idea sobre cómo puedo ver qué está causando los 500 errores? ¡Gracias por cualquier ayuda!

+0

"Stackies"? :-) – SLaks

+1

+1 para Stackies! – DigitalRoss

+0

¿Intentaste aplicaciones simples en httpd? como una aplicación 'How low world'. acaba de obtener '/' hacer; 'How low world'; end Primero compruebalo y luego sigue con tus aplicaciones. Por favor, compruebe sus aplicaciones simples en httpd y archivo de configuración. por cierto, creo que no puedes obtener algunos registros de https en sinatra. – tknv

Respuesta

6

Intentaría utilizar el middleware Rack :: ShowExceptions para tratar de localizar el problema. En su config.ru añadir estas dos líneas antes de la llamada de ejecución:

require 'rubygems' 
require 'your-app' 

use Rack::ShowExceptions 

run YourApp 

Eso debe capturar y mostrar la traza de las excepciones que ocurren en rack o en su aplicación. Eso debería darte más detalles para trabajar, al menos esa sería la esperanza.

1

¿Tal vez hay algún problema con la configuración de su registro?

Redirige STDERR al ejecutar el servidor Sinatra para que puedas leerlo. Me gusta:

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

Gracias por las respuestas, pero no terminé necesitando usarlas. Inicialmente estaba implementando la aplicación en un sub-URI configuration. Cuando implementé la aplicación en su propio subdominio, los problemas desaparecieron.

Así que ..No estoy realmente seguro de cuál fue el problema, pero deshacerme de esta línea es mi configuración de Apache para el sitio que resolvió las cosas:

Redirect permanent/https://www.example.org/admin/member_photos/ 
Cuestiones relacionadas