Warum erhalte ich bei der ersten Anfrage nach dem Neustart einer Sinatra-App mit Rack und Phusion Passenger eine Fehlermeldung?
Frage
Nachdem ich tmp/restart.txt berühre und meine App neu startet, löst die erste Anfrage einen Fehler aus, normalerweise etwas, weil Haml::Engine oder ein anderes Juwel nicht gefunden wird.Die zweite und die folgenden Anfragen funktionieren alle einwandfrei.Ich hatte dieses Problem auf Dreamhost, auf dem Rack 0.4.1 und Sinatra 0.3.3 ausgeführt wurden, aber nachdem ich zu meinem eigenen Host gewechselt bin und ein neueres Rack (0.9.1) und Sinatra (0.9.0.4) ausgeführt habe, sehe ich das Problem immer noch.
Wenn Sie die genaue Antwort nicht kennen, aber Tipps haben, wie ich sie aufspüren kann, lassen Sie es mich bitte wissen.
Hier ist meine config.ru:
require 'rubygems'
require 'sinatra'
disable :run
set :environment, :production
set :raise_errors, true
require 'app.rb'
run Sinatra::Application
Lösung
Ich würde versuchen, sicherzustellen, dass Sie alle notwendigen Edelsteine benötigen.Vielleicht gibt es etwas an der Reihenfolge, in der Sie es ausführen, was dazu führt, dass es beim ersten Mal fehlschlägt.Benötigen Sie rubygems
?
Es könnte auch hilfreich sein, wenn Sie Ihre Rack-Konfiguration für die App veröffentlicht haben (config.ru
).
Andere Tipps
Der Fehler wird durch die Sinatra gem Laden zu spät verursacht. Das ist die Lösung:
#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