2014-10-23 2 views
0

Я создал приложение Sinatra, которое использует драгоценность Mechanize. Он прекрасно работает локально, но когда я развернуть его на Heroku он говорит мнеMechanize + Sinatra + Heroku: приложение разбито

at=error code=H10 desc="App crashed" method=GET path="/" fwd="83.245.232.99" dyno= connect= service= status=503 bytes= 

даже для этого свернутом код:

require "sinatra" 
require "rubygems" 
require "mechanize" 

get '/' do 
    "hi" 
end 

Что происходит не так?

ответ

1

Возможно, это причина.

HTTPClient определяет модуль с именем HTTP. По умолчанию Sinatra ищет обработчиков Rack с именами имен HTTP и WEBrick в этом порядке.

Поскольку пространство имен HTTP определено, Sinatra фактически считает, что это обработчик Rack. Я думаю, что это ошибка в Синатре. Он должен проверить, отвечает ли обработчик на запуск перед его использованием.

Во всяком случае, исправление использовать Thin, или если вы хотите использовать WEBrick затем явно сказать Синатру, чтобы пропустить автоматическое определение Rack, выполнив:

набора: сервер, «WEBrick» Это предотвратит Синатр от мышления HTTP HTTP-модуль - это обработчик Rack.

Получил от here

0

По какой-то причине он требует

set :server, 'webrick' 

в моем app.rb работать с Mechanize без ошибок.

Смежные вопросы