2015-05-12 36 views
2

我正在构建一个需要线程化的Sinatra应用程序,因为我使用sucker-punch作业,并且我想使用Puma服务器来做到这一点,尽管我从来没有之前使用过它。Sinatra使用Thin而不是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 

回答

3

您需要在config.ru机架文件中设置您的服务器。在这个文件你可以设置

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

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

但更好的方法是只运行彪马明确:

bundle exec puma config.ru 

或通过@马特的建议:

rackup -s puma 
+0

那么在sinatra中设置服务器有什么意义? – Thermatix

+1

您正在用'rackup'启动您的服务器,因此您需要在那里设置服务器类型。如果您只是运行'ruby app.rb'来启动服务器,那么Sinatra将首先运行并选择服务器。 –

+0

啊!我知道,我知道我将来会参考。 – Thermatix

2

只是bundle exec运行它。这可确保可用的宝石只是您的Gemfile中指定的宝石。

因此,即使您已经安装了瘦身设备,但您的​​Gemfile上有美洲狮,它也会选择美洲狮。

+1

更妙的是,运行'捆绑安装--binstubs --path供应商'并且每个沙箱都将宝石投影到特定的目录。然后使用'bundle exec'是非常安全的! – iain

相关问题