ruby - 在 rackup 文件中设置服务器选项

标签 ruby server config rack puma

我正在尝试设置服务器选项 I.E.端口、主机等,但我无法从 config.ru 文件中找到有关如何执行此操作的任何信息。

我尝试将配置选项放入散列中,然后执行以下操作:

configure { set :server, config[:server][:handler].to_sym }
Rack::Handler.default.run(App, config[:server])

还试过:

Rack::Handler::pick(['puma']).run App, config[:server]

甚至:

configure { set :server, config[:server].delete(:handler).to_sym }

这样处理程序就不会在服务器配置哈希中并且仍然...

没有骰子。

配置哈希是:

{
  :handler => "puma", 
  :host    => "127.0.0.1", 
  :port    => 3000, 
  :threads => "0:16", 
  :verbose => true
}

但是哈希配置被忽略了,我将端口设置为 3000 但应用程序默认加载 8080

它还有关于不存在 run 命令的错误(很明显,我没有使用它)。

所以解决这个问题也很好。

我确信有一个正确的方法可以做到这一点,但为什么很难找到它的文档?我在 google 中搜索了尽可能多的搜索词,但没有任何结果是完全正确的。

最佳答案

它没有被很好地记录下来,因为大多数人不会做你想做的事情。 :-) 人们通常将他们的 Puma 配置存储在 config/puma.rb 中或者在命令行上传递它,例如在配置文件中。

我要冒昧地假设您的 App 是 Sinatra 应用程序或类似的应用程序。尝试在 Sinatra configure {} block 中设置这些选项的主要问题是,当 rackup 运行类并执行这些语句时,设置端口和线程池等内容已经太晚了尺寸。至于缺少的 run 方法,我认为您只需要在 config.ru 中使用 run App。不确定你要去那里做什么。

您可以通过在文件顶部添加以下内容来告诉 rackup 使用 Puma:

#\ -s Puma

如果你想设置端口或任何其他 rackup 选项,你可以这样做:

#\ -s Puma -p 3000

或者,对于 Puma 特定的选项:

#\ -s Puma -p 3000 -O Threads=0:16 -O Verbose=true

这(大部分)记录在 Puma 的自述文件中 here , 和 here .

另一种选择是完全跳过 rackup 和 config.ru,只将所有内容构建到您的 Sinatra 应用程序中:

require 'sinatra/base'
require 'puma'

class App < Sinatra::Application
  configure do
    set :server, :puma
    set :port, 3000
    set :server_settings, :Threads => '0:16', :Verbose => true
  end

  run! if $0 == app_file
end

然后你就可以像任何普通的 Ruby 脚本一样运行你的应用程序,例如 ruby 应用.rb

归根结底,我强烈建议您探索创建 Puma 配置文件并改用它。它只是更简单、更清晰、更易于理解。如果您需要从环境或其他方法或过程的结果中提取 Puma 设置,您可以在其中进行。祝你好运。

关于ruby - 在 rackup 文件中设置服务器选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39260374/

相关文章:

将客户端连接到服务器?

java - 在 Camel-Spring-Boot 设置中配置来自外部 JAR 的 Camel 路由

Magento:以编程方式更改小部件的配置

ruby - 列出我的 AWS S3 存储桶的 key 下的所有项目

ruby-on-rails - 如何在 Controller 的 Rails 5 测试中测试或绕过 Basic Auth

javascript - SignalR:如何在信号器中自动将内容从服务器推送到客户端?

tomcat - 如何将apache tomcat的server.xml拆分成几个单独的文件?

ruby-on-rails - 有没有办法在没有 mod_rewrite 的情况下使用 Ruby on Rails 将 www.foo.com/* 重定向到 foo.com/*

ruby - 允许其他人通过亚马逊实例查看您的 Sinatra 本地服务器

python - FutureWarning : The alias _() will be deprecated. 使用 _i18n() 代替