如何将配置文件传递给Puma&西纳特拉?

时间:2017-07-19 16:04:32

标签: ruby heroku sinatra rack puma

我有一个部署到Heroku的Sinatra应用程序。

我想通过puma.rb配置文件配置Puma以拥有多个工作人员,但自述文件中的两个示例仅显示如何将“服务器名称”传递给Procfile,但它没有' t显示如何传递配置:

方法1

bundle exec ruby app.rb -s puma

方法2

require 'sinatra'
configure { set :server, :puma }

这里列出的所有方法都遇到了同样的问题:https://github.com/puma/puma/issues/13#issuecomment-7391148

我的配置位于puma.rb

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['THREAD_COUNT'] || 5)

threads threads_count, threads_count

如果有帮助的话,这是我的config.ru

require './app'
run Sinatra::Application

我实际上尝试在Procfile中执行此操作:

bundle exec puma -c puma.rb

哪个在本地工作得很好但在生产中死了,但没有生成日志所以我不知道出了什么问题。

2 个答案:

答案 0 :(得分:1)

尝试提升C而不是c

bundle exec puma -C puma.rb

https://github.com/puma/puma#clustered-mode

答案 1 :(得分:1)

我解决了这个问题(问题是我错过了puma.rb配置中的其余代码)

<强> Procfile

web: bundle exec puma -C puma.rb

<强> puma.rb

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['THREAD_COUNT'] || 5)
threads threads_count, threads_count

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

<强> config.ru

require './app'
run Sinatra::Application