Pregunta

Estoy implementando una aplicación Sinatra con pasajeros. La aplicación implementada funciona, pero no del todo: algunas rutas funcionan bien, otras simplemente muestran una página en blanco. Parece que no puedo encontrar ninguna diferencia importante entre las rutas que funcionan y las que no, y parece que no puedo rastrear ningún error ...

Handlers

He definido los manejadores de errores y no encontrados de la siguiente manera:

not_found do
  '404. Bummer!'
end

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

Funcionan bien en mi máquina local, tanto en desarrollo como en producción, pero nunca veo que aparezcan en el servidor.

Registros de Apache

Cuando sigo el acceso.log de Apache y golpeo una de las rutas rotas, veo un 500:

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"

rack_hoptoad

También instalé y configuré rack_hoptoad middleware en mi config.ru, pero no hay excepciones. a saltar.

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

logging

He configurado el registro de esta manera ...

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 me permite llamar a logger.info dentro de mis rutas, que funciona localmente 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 de cómo puedo ver qué está causando los 500 errores? ¡Gracias por cualquier ayuda!

¿Fue útil?

Solución

Intentaría usar el middleware Rack :: ShowExceptions para tratar de rastrear el problema. En su config.ru, agregue estas dos líneas antes de la llamada de ejecución:

require 'rubygems'
require 'your-app'

use Rack::ShowExceptions

run YourApp

Eso debería capturar y mostrar la traza inversa para cualquier excepción que ocurra en Rack o en su aplicación. Eso debería darle más detalles para trabajar, al menos esa sería la esperanza.

Otros consejos

¿Quizás haya algún problema con la configuración de su registro?

Redirija STDERR cuando ejecute el servidor Sinatra para que pueda leerlo. Me gusta:

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

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

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

Redirect permanent / https://www.example.org/admin/member_photos/
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top