¿Por qué aparece un error en la primera petición después de reiniciar una aplicación Sinatra con cremallera y pasajeros Phusion?
Pregunta
Después toco tmp / restart.txt y mis aplicación se reinicia, la primera solicitud genera un error, por lo general algo acerca de no encontrar Haml :: motor o alguna otra joya. La segunda y siguientes solicitudes todos funcionan bien. Estaba teniendo este problema en Dreamhost, que estaba ejecutando 0.4.1 rack y Sinatra 0.3.3, pero después de pasar a mi propio anfitrión y la ejecución de un estante más reciente (0.9.1) y Sinatra (0.9.0.4) Todavía veo el problema.
Si usted no sabe la respuesta exacta, pero tienen consejos sobre cómo podía seguir hacia abajo, por favor hágamelo saber.
Aquí está mi config.ru:
require 'rubygems'
require 'sinatra'
disable :run
set :environment, :production
set :raise_errors, true
require 'app.rb'
run Sinatra::Application
Solución
Me vería en asegurarse de que está requiriendo todas las gemas necesarias. Tal vez hay algo en el orden en que lo está haciendo que está causando que falle la primera vez. ¿Está requiriendo rubygems
?
También podría ayudar si usted envió su configuración de bastidor para la aplicación (config.ru
).
Otros consejos
El error es causado por la gema de carga Sinatra demasiado tarde. Esta es la solución:
#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