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



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

我想通过puma.rb配置文件将 Puma 配置为有多个工作线程,但自述文件中的两个示例都只显示了如何将"服务器名称"传递给Procfile,但没有显示如何传递配置:

方法 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

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

我这样解决了这个问题(问题是我在配置中缺少puma.rb其余代码(

Procfile

web: bundle exec puma -C 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

尝试大写C而不是c

bundle exec puma -C puma.rb

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

最新更新