Синатра на Пассажира всегда терпит неудачу с первой попытки

У меня есть небольшое приложение Sinatra, которое я запускаю на учетной записи общего хостинга с помощью Passenger. Однако при первом обращении к приложению через некоторое время появляется страница с сообщением об ошибке "Пассажир", в которой говорится, что приложение не может быть запущено. Обычно потому, что Синатра не может быть найден.

Я предполагаю, что это обычная задержка с момента появления нового экземпляра. Однако есть ли способ отложить попытку загрузки Siantra до полной загрузки Passenger?

4 ответа

Я думаю, что вам может понадобиться добавить Gem.clear_paths! там

Недавно я принял это за поддержку Dreamhost (не очень хороший опыт), и в конце концов они рекомендовали заморозить драгоценные камни в приложении. В лучшем случае это частичное решение, потому что оно работает для некоторых драгоценных камней, а не для других.

Вместо

require 'sinatra'

Я имею:

require 'vendor/gems/sinatra-0.9.4/lib/sinatra'

Замораживание драгоценных камней рассматривается в другом месте, но кратко: чтобы подготовиться к этому, нужно сделать

mkdir vendor/gems
cd vendor/gems
gem unpack sinatra

В результате этого изменения я никогда не получаю экран ошибки запуска, цитирующий sinatra как файл, который он не может загрузить. Тем не менее, я все еще получаю его за некоторые другие драгоценные камни, которые требуют себя или части других драгоценных камней. Не слишком ясно о деталях, но я работаю над идеей взлома установленных гемов, чтобы каждый "требуемый" использовал путь непосредственно из моей библиотеки "вендора".

Я, кажется, решил проблему, установив GEMS_PATH Переменная среды в файле.htaccess. Я не столкнулся с ошибкой снова. ЕЩЕ!

У меня была похожая проблема давным-давно. Обновление до новой версии Sinatra помогло мне - какую версию вы используете?

Другие вопросы по тегам