Pergunta

Estou implantando um aplicativo de Sinatra usando passageiro. O aplicativo implantado está funcionando, mas não totalmente: alguma multa caminhos trabalho, outros simplesmente processar uma página em branco. Eu não consigo encontrar qualquer grandes diferenças entre as rotas que o trabalho e as rotas que não, e eu não consigo rastrear quaisquer erros ..

Manipuladores

Eu definiram os manipuladores NOT_FOUND e de erro da seguinte forma:

not_found do
  '404. Bummer!'
end

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

Estes funcionam bem em minha máquina local, tanto no desenvolvimento e produção, mas eu nunca ver estas surgem no servidor.

Apache Logs

Quando access.log e eu cauda do Apache atingiu um dos caminhos quebrados, eu vejo um 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

Eu também instalado e configurado rack_hoptoad middleware na minha config.ru, mas há exceções estão fazendo -lo para hoptoad.

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

logging

Eu configurei o registo como assim ..

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 configuração permite-me chamar logger.info dentro das minhas rotas, que funciona localmente e no servidor para as rotas de trabalho, mas os caminhos quebrados não recebem o suficiente para logger.info chamada.

O que fazer?

Todas as idéias a respeito de como eu posso ver o que está causando os erros 500? Obrigado por qualquer ajuda!

Foi útil?

Solução

Gostaria de tentar usar o Rack :: ShowExceptions middleware para tentar rastrear o problema. Em sua config.ru adicionar estas duas linhas antes da chamada Run:

require 'rubygems'
require 'your-app'

use Rack::ShowExceptions

run YourApp

Isso deve capturar e exibir o registo de chamadas para todas as exceções que ocorrem em rack ou em seu aplicativo. Isso deve lhe dar mais detalhes para trabalhar com, pelo menos, que seria a esperança.

Outras dicas

Talvez haja algo de errado com sua configuração de log?

Redirect STDERR quando executando o servidor Sinatra para que você possa lê-lo. Como:

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

Obrigado pelas respostas, mas eu não acabam necessitando de usá-los. Eu estava originalmente implantar a aplicação de uma sub-URI configuração . Quando eu implantado o aplicativo para o seu próprio subdomínio em vez disso, os problemas foram embora.

Assim .. Eu realmente não estou certo qual era o problema, mas se livrar desta linha é a minha configuração do Apache para o site é o que resolveu as coisas:

Redirect permanent / https://www.example.org/admin/member_photos/
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top