Frage

ich den Einsatz einer Sinatra App Passagier. Die eingesetzte App funktioniert, aber nicht ganz: einige Pfade funktionieren, andere einfach eine leere Seite machen. Ich kann nicht scheinen keine großen Unterschiede zwischen den Routen zu finden, die funktionieren und die Routen, die dies nicht tun, und ich kann nicht alle Fehler auf die Spur scheinen ..

Handlers

Ich habe die not_found und Fehlerbehandlungsroutinen wie folgt definiert:

not_found do
  '404. Bummer!'
end

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

Diese arbeiten auf meinem lokalen Rechner, sowohl in der Entwicklung und Produktion, aber ich sehe nie diese auf dem Server kommen.

Apache Logs

Wenn ich access.log Schwanz Apache und eine der gebrochenen Wege getroffen, ich sehe ein 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

Ich habe auch installiert und konfiguriert rack_hoptoad Middleware in meinem config.ru, aber keine Ausnahmen machen es hoptoad.

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

Anmeldung

Ich habe wie so einrichten Anmeldung ..

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

Dieses Setup ermöglicht rufen Sie mich an logger.info in meine Routen, die lokal und auf dem Server für die Arbeitswege funktioniert, aber die gebrochenen Pfade nicht weit genug zu nennen logger.info.

Was tun?

Alle Ideen, wie kann ich sehen, was die 500 Fehler verursacht? Vielen Dank für jede Hilfe!

War es hilfreich?

Lösung

Ich würde versuchen, die Rack :: ShowExceptions Middleware, um zu versuchen und das Problem nachzuzuspüren. In Ihrem config.ru fügen diese beiden Zeilen vor dem Lauf Aufruf:

require 'rubygems'
require 'your-app'

use Rack::ShowExceptions

run YourApp

Das sollte vorkommendes den Backtrace für Ausnahmen in Rack-oder in der App fangen und anzuzeigen. Das sollte Ihnen mehr Details geben, mit zu arbeiten, dass zumindest die Hoffnung sein würde.

Andere Tipps

Vielleicht gibt es etwas falsch mit Ihrem Log-Setup?

Redirect STDERR beim Ausführen des Sinatra-Server, so dass Sie es lesen kann. Wie:

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

Danke für die Antworten, aber ich habe nicht am Ende brauchen, sie zu nutzen. Ich war ursprünglich die Bereitstellung der App in einem Unter URI Konfiguration . Wenn ich die Anwendung bereitgestellt, um es stattdessen eigene Sub-Domain ist, gingen die Probleme weg.

Also .. ich bin nicht wirklich sicher, was das Problem war, aber diese Linie loszuwerden ist meine Apache-Konfiguration für die Website ist, was die Dinge gelöst:

Redirect permanent / https://www.example.org/admin/member_photos/
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top