如何将配置文件传递给 Puma & Sinatra?

How to pass config file to Puma & Sinatra?

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

我想通过 puma.rb 配置文件配置 Puma 以拥有多个 worker,但自述文件中的两个示例仅显示如何将 'server name' 传递给 Procfile,但是它没有显示如何传递配置:

方法一

bundle exec ruby app.rb -s puma

方法二

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

它在本地运行完美,但在生产中就死机了,但没有生成日志,所以我不知道出了什么问题。

尝试大写 C 而不是 c

bundle exec puma -C puma.rb

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

我这样解决了问题(问题是我缺少 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