Por que recebo um erro no primeiro pedido depois de reiniciar um aplicativo de Sinatra com cremalheira e Phusion Passenger?

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

Pergunta

Depois de eu tocar tmp / restart.txt e meu aplicativo for reiniciado, o primeiro pedido gera um erro, geralmente algo sobre não encontrar Haml :: motor ou alguma outra jóia. A segunda e as solicitações subseqüentes todos funcionam bem. Eu estava tendo este problema na Dreamhost que estava correndo cremalheira 0.4.1 e 0.3.3 Sinatra, mas depois de se mudar para o meu próprio host e execução de um rack mais recente (0.9.1) e Sinatra (0.9.0.4) Eu ainda vejo o problema.

Se você não sabe a resposta exata, mas tem dicas sobre como eu poderia rastreá-lo, por favor me avise.

Aqui está a minha config.ru:

require 'rubygems'
require 'sinatra'

disable :run
set :environment, :production
set :raise_errors, true

require 'app.rb'
run Sinatra::Application
Foi útil?

Solução

Eu olhava para ter certeza que você está exigindo que todos os gems necessárias. Talvez haja algo sobre a ordem que você está fazendo que está causando isso falhar pela primeira vez. Você está exigindo rubygems?

Ele pode também ajuda se você postou sua configuração de rack para o aplicativo (config.ru).

Outras dicas

O erro é causado pela jóia de carregamento Sinatra tarde demais. Esta é a solução:

#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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top