2009-10-27 4 views
11

Je suis en train de déployer une application Sinatra en utilisant des passagers. L'application déployée fonctionne, mais pas entièrement: certains chemins fonctionnent bien, d'autres rendent simplement une page vierge. Je ne peux pas sembler trouver des différences majeures entre les routes qui fonctionnent et les routes qui ne sont pas, et je ne peux pas sembler traquer des erreurs ..Problèmes de débogage de l'application Sinatra en production

Handlers

Je définis les NOT_FOUND et gestionnaires erreur comme suit:

not_found do 
    '404. Bummer!' 
end 

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

ces belles de travail sur ma machine locale, à la fois dans le développement et la production, mais je ne vois jamais ceux-ci viennent sur le serveur.

Journaux Apache

Quand je queue de access.log d'Apache et a frappé l'un des chemins cassés, je vois 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

J'ai aussi installé et configuré rack_hoptoad middleware dans mon config.ru, mais aucune exception ne le rend à hoptoad.

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

vous connecter

J'ai mis en place la connexion comme si ..

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 

Cette configuration me permet d'appeler logger.info au sein de mes routes, qui travaille localement et sur le serveur pour les routes de travail, mais les chemins cassés ne sont pas assez loin pour appeler logger.info.

Que faire?

Des idées sur la façon dont je peux voir ce qui cause les erreurs 500? Merci pour toute aide!

+0

« Stackies »? :-) – SLaks

+1

+1 pour Stackies! – DigitalRoss

+0

Avez-vous essayé des applications simples sur httpd? comme une application «Comment bas monde». juste obtenir '/' faire; 'How low world'; fin Au premier coup d'oeil, puis à côté de vos applications. S'il vous plaît vérifier vos applications simples sur httpd et le fichier de configuration. En passant, je pense que vous ne pouvez pas obtenir des logs https sur sinatra. – tknv

Répondre

6

Je voudrais essayer d'utiliser le rack :: middleware ShowExceptions pour essayer de tracer le problème. Dans votre config.ru ajouter ces deux lignes avant l'appel d'exécution:

require 'rubygems' 
require 'your-app' 

use Rack::ShowExceptions 

run YourApp 

Cela devrait attraper et afficher la trace pour toutes les exceptions qui se produisent dans rack ou dans votre application. Cela devrait vous donner plus de détails pour travailler, du moins ce serait l'espoir.

1

Peut-être que la configuration de votre journal comporte un problème?

Redirige STDERR lors de l'exécution du serveur Sinatra afin que vous puissiez le lire. Comme:

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

Merci pour les réponses, mais je n'ai pas eu besoin de les utiliser. Je déployais à l'origine l'application dans un sub-URI configuration. Lorsque j'ai déployé l'application sur son propre sous-domaine, les problèmes ont disparu.

Donc ..Je ne suis pas vraiment sûr de ce que le problème, mais de se débarrasser de cette ligne est ma configuration Apache pour le site est résolu choses: ce

Redirect permanent/https://www.example.org/admin/member_photos/ 
Questions connexes