Perché ricevo un errore alla prima richiesta dopo il riavvio di un'applicazione Sinatra a cremagliera e Phusion passeggeri?

StackOverflow https://stackoverflow.com/questions/582201

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
È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top