Perché ricevo un errore alla prima richiesta dopo il riavvio di un'applicazione Sinatra a cremagliera e Phusion passeggeri?
Domanda
Dopo che tocco tmp / restart.txt e le mie riavvia app, la prima richiesta genera un errore, di solito qualcosa di non trovare Haml :: motore o qualche altra gemma. La seconda e le successive richieste di tutti funzionano bene. Ho avuto questo problema su DreamHost, che era in esecuzione rack 0.4.1 e 0.3.3 Sinatra, ma dopo essersi trasferito al mio ospite e l'esecuzione di un rack più recente (0.9.1) e Sinatra (0.9.0.4) Vedo ancora il problema.
Se non si conosce la risposta esatta, ma avere consigli su come avrei potuto rintracciarlo, fatemelo sapere.
Ecco la mia config.ru:
require 'rubygems'
require 'sinatra'
disable :run
set :environment, :production
set :raise_errors, true
require 'app.rb'
run Sinatra::Application
Soluzione
Mi piacerebbe guardare in assicurandosi che si sta imponendo a tutte le gemme necessarie. Forse c'è qualcosa circa l'ordine si sta facendo che sta causando il fallimento la prima volta. Stai richiedendo rubygems
?
Si potrebbe anche aiutare se hai postato il tuo configurazione rack per l'applicazione (config.ru
).
Altri suggerimenti
L'errore è causato dalla gemma Sinatra carico troppo tardi. Questa è la soluzione:
#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