2015-05-12 4 views
2

Я создаю приложение Sinatra, которое должно быть потоковым, поскольку я использую sucker-punch для заданий, и я хочу использовать сервер Puma, чтобы сделать это, хотя я никогда не использовал использовал его раньше.Sinatra использует Thin вместо Puma

По какой-то причине, когда я запускаю приложение, он запускает Thin.

Я удалил Тонкий, и он использует Puma, что хорошо, но как я могу остановить его от начала с Thin в будущем в случае, если это повторится?

Я начинаю мое приложение с rackup и у меня есть в моем главном файле app.rb:

class App < ::Sinatra::Base 
    configure do 
    set :show_exceptions, true 
    set :root, Info[:root] 
    set :threaded, true 

    set :server, :puma 
    Tilt.register Tilt::ERBTemplate, 'html.erb' 

    enable :logging 
    use Rack::CommonLogger, Log.file 

    if ENV['APP_ENVIRONMENT'] == 'PROD' 
     set :environment, :production 
     set :bind, '0.0.0.0', HOST 
     set :show_exceptions, false 
    end 
    end 
end 

ответ

3

Вам необходимо установить ваш сервер в файле конфигурации config.ru. В этом файле вы можете установить

Rack::Handler.get('puma').run App.new 

Документация доступна в «Module: Rack::Handler».

Однако еще лучший способ это просто запустить Puma явно:

bundle exec puma config.ru 

ИЛИ как это было предложено: @ Matt

rackup -s puma 
+0

Тогда в чем смысл настройки сервера в синатра? – Thermatix

+1

Вы запускаете свой сервер с помощью 'rackup', поэтому вам нужно установить там тип сервера. Если бы вы запустили сервер, просто запустив ruby ​​app.rb, тогда Sinatra будет работать первым и выбрать сервер. –

+0

AH! Понимаю, хорошо знаю, что буду знать для будущей справки. – Thermatix

2

Просто запустите его с bundle exec. Это гарантирует наличие драгоценных камней только тех, которые указаны в вашем Gemfile.

Итак, даже если у вас тонкая установка, но у вас есть пума на вашем Gemfile, она выберет пуму.

+1

Даже лучше, запустите 'пакет установки --binstubs --path поставщика 'и эти песочницы каждый проект самоцветов в этот конкретный каталог. Тогда использование 'bundle exec' является дополнительным безопасным! – iain

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