【问题标题】:How to pass config file to Puma & Sinatra?如何将配置文件传递给 Puma & Sinatra?
【发布时间】:2017-12-25 00:41:59
【问题描述】:

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

我想通过puma.rb 配置文件将 Puma 配置为拥有多个工作人员,但自述文件中的两个示例仅显示如何将“服务器名称”传递给 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

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

【问题讨论】:

    标签: ruby heroku sinatra rack puma


    【解决方案1】:

    尝试大写 C 而不是 c

    bundle exec puma -C puma.rb
    

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

    【讨论】:

    • 执行此操作时出现“应用程序错误”,但它不会打印到生产日志有什么问题
    【解决方案2】:

    我就这样解决了这个问题(问题是我在puma.rb config 中遗漏了其余代码)

    过程文件

    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
    

    【讨论】:

      猜你喜欢
      • 2019-03-25
      • 2014-01-24
      • 2013-07-11
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多