Pourquoi ai-je une erreur sur la première demande après le redémarrage d'une application Sinatra avec rack et Phusion passager?
Question
Après que je touche tmp / restart.txt et redémarre mon application, la première requête renvoie une erreur, généralement quelque chose de ne pas trouver Haml :: Engine ou un autre bijou. La deuxième et les demandes ultérieures fonctionnent tous très bien. J'avais ce problème sur Dreamhost qui était en cours d'exécution en rack 0.4.1 et 0.3.3 Sinatra, mais après avoir déménagé à mon hôte et l'exécution d'un rack plus récent (0.9.1) et Sinatra (0.9.0.4) Je vois encore le problème.
Si vous ne connaissez pas la réponse exacte, mais ont des conseils sur la façon dont je pouvais le suivre vers le bas, s'il vous plaît laissez-moi savoir.
Voici mon config.ru:
require 'rubygems'
require 'sinatra'
disable :run
set :environment, :production
set :raise_errors, true
require 'app.rb'
run Sinatra::Application
La solution
Je regarde en vous assurant que vous êtes exigeant que tous les gemmes nécessaires. Peut-être il y a quelque chose de l'ordre que vous le faites qui cause à échouer la première fois. Est-ce que vous rubygems
exigez?
Il pourrait également aider si vous publié votre configuration de rack pour l'application (config.ru
).
Autres conseils
L'erreur est causée par la pierre précieuse Sinatra chargement 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