Почему я получаю сообщение об ошибке при первом запросе после перезапуска приложения Sinatra с Rack и Phusion Passenger?
Вопрос
После того, как я коснусь tmp/restart.txt и мое приложение перезапустится, первый запрос выдает ошибку, обычно что-то о том, что не найден Haml::Engine или какой-либо другой gem.Второй и последующие запросы все работают нормально.У меня была эта проблема на Dreamhost, на котором были запущены Rack 0.4.1 и Sinatra 0.3.3, но после перехода на мой собственный хост и запуска более новых Rack (0.9.1) и Sinatra (0.9.0.4) я все еще вижу проблему.
Если вы не знаете точного ответа, но у вас есть советы о том, как я мог бы его найти, пожалуйста, дайте мне знать.
Вот мой config.ru:
require 'rubygems'
require 'sinatra'
disable :run
set :environment, :production
set :raise_errors, true
require 'app.rb'
run Sinatra::Application
Решение
Я бы позаботился о том, чтобы убедиться, что вам требуются все необходимые драгоценные камни.Возможно, есть что-то в порядке, в котором вы это делаете, что приводит к сбою в первый раз.Вам требуется rubygems
?
Это также могло бы помочь, если бы вы опубликовали свою конфигурацию стойки для приложения (config.ru
).
Другие советы
Ошибка вызвана тем, что Sinatra gem загружается слишком поздно.Это и есть решение:
#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