Sinatra 使用 Thin 而不是 Puma

Sinatra is using Thin instead of Puma

我正在构建一个需要线程化的 Sinatra 应用程序,因为我正在使用 sucker-punch 进行作业,我想使用 Puma 服务器来完成它,尽管我以前从未使用过它。

出于某种原因,当我启动我的应用程序时,它会运行 Thin。

我卸载了 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

只是 运行 它与 bundle exec。这可确保可用的 gem 仅是您的 Gemfile 中指定的 gem。

所以,即使你安装了 thin,但你的 Gemfile 上有 puma,它也会选择 puma。

您需要在 config.ru rackup 文件中设置您的服务器。在此文件中,您可以设置

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

文档在“Module: Rack::Handler”中可用。

然而,更好的方法是 运行 Puma 明确:

bundle exec puma config.ru

或按照@matt 的建议:

rackup -s puma