2009-02-24 22 views
1

Une fois que j'ai touché tmp/restart.txt et que mon application a redémarré, la première requête génère une erreur, généralement quelque chose à propos de la non-détection de Haml :: Engine ou d'une autre gemme. La deuxième et les demandes suivantes fonctionnent bien. J'avais ce problème sur Dreamhost qui exécutait Rack 0.4.1 et Sinatra 0.3.3 mais après avoir déménagé sur mon propre hôte et avoir lancé un nouveau Rack (0.9.1) et Sinatra (0.9.0.4), je vois toujours le problème.Pourquoi ai-je une erreur sur la première requête après le redémarrage d'une application Sinatra avec Rack et Phusion Passenger?

Si vous ne connaissez pas la réponse exacte, mais que vous avez des conseils pour la retrouver, n'hésitez pas à me contacter.

Voici mon config.ru:

require 'rubygems' 
require 'sinatra' 

disable :run 
set :environment, :production 
set :raise_errors, true 

require 'app.rb' 
run Sinatra::Application 

Répondre

2

Je regarde en vous assurant que vous êtes exigeant que tous les gemmes nécessaires. Il y a peut-être quelque chose dans l'ordre dans lequel vous le faites qui fait échouer la première fois. Avez-vous besoin de rubygems?

Il peut également être utile si vous avez affiché la configuration de votre rack pour l'application (config.ru).

+0

Oui, j'ai besoin de rubygems et il fonctionne manuellement ou en rack manuellement. J'ai ajouté mon config.ru à la question originale comme vous l'avez suggéré. C'est presque comme si Passenger ne redémarre pas l'application jusqu'à ce que la première demande arrive et que cette demande rencontre un problème de synchronisation car elle arrive toujours. –

+0

Tout va bien avec votre configuration de rack. La seule chose qui reste à suggérer est d'essayer une application basique de monde bonjour et voir si la même chose se produit. On dirait que votre application montre le même problème sur plusieurs hôtes que c'est quelque chose à voir avec votre application elle-même. Peut-être aussi mettre à jour toutes vos gemmes? – rfunduk

+0

N'a pas regardé cela depuis un moment mais maintenant je ne semble pas avoir le problème et la seule chose que je peux penser est que je suis en cours d'exécution une version plus récente de Sinatra (0.9.1.1), et puisque vous avez mentionné la mise à jour gemmes, vous obtenez la coche par défaut. –

1

L'erreur est causée par le chargement de la gemme Sinatra trop tard. Ceci est la solution:

 

#config.ru 

ENV['GEM_HOME'] ||= `gem env path`.strip.split(':').first 
ENV['GEM_PATH'] ||= `gem env path`.strip 
Gem.clear_paths 

require 'application-filename-goes-here' 
set :environment, :production 
run Sinatra::Application