在 rackup 文件中设置服务器选项
set server options inside rackup file
我正在尝试设置服务器选项 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 中搜索了尽可能多的搜索词,但没有任何结果是完全正确的。
您可以在 config.ru
中以 #\
开头的行指定选项(它必须是第一个这样的行)。你指定它们就好像你指定命令行选项到 rackup
:
#\ -s puma -o 127.0.0.1 -p 3000 -O Threads=0:16 -O Verbose
# require everything and set up middleware etc.
run MyApp
docs for this are hidden away on the wiki.
检查 rackup -s puma -h
您可以使用的选项。 -O
将选项传递给您正在使用的服务器(Puma 似乎接受 Threads
和 Verbose
)。
它没有很好的记录,因为大多数人不会做你想做的事情。 :-) 人们通常将他们的 Puma 配置存储在 config/puma.rb 中或在命令行上传递它,例如在配置文件中。
我要冒险,假设您的 App
是 Sinatra 应用程序或类似应用程序。尝试在 Sinatra configure {}
块中设置这些选项的主要问题是,当 rackup 是 运行ning class 并执行这些语句时,设置诸如端口和线程池大小。至于缺少的 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, and 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 [=13=] == app_file
end
然后您可以像任何普通 Ruby 脚本一样 运行 您的应用程序,例如ruby app.rb
。
归根结底,我强烈建议您探索创建 Puma 配置文件并改用它。它只是更简单、更清晰、更易于理解。如果您需要从环境或其他方法或过程的结果中提取 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 中搜索了尽可能多的搜索词,但没有任何结果是完全正确的。
您可以在 config.ru
中以 #\
开头的行指定选项(它必须是第一个这样的行)。你指定它们就好像你指定命令行选项到 rackup
:
#\ -s puma -o 127.0.0.1 -p 3000 -O Threads=0:16 -O Verbose
# require everything and set up middleware etc.
run MyApp
docs for this are hidden away on the wiki.
检查 rackup -s puma -h
您可以使用的选项。 -O
将选项传递给您正在使用的服务器(Puma 似乎接受 Threads
和 Verbose
)。
它没有很好的记录,因为大多数人不会做你想做的事情。 :-) 人们通常将他们的 Puma 配置存储在 config/puma.rb 中或在命令行上传递它,例如在配置文件中。
我要冒险,假设您的 App
是 Sinatra 应用程序或类似应用程序。尝试在 Sinatra configure {}
块中设置这些选项的主要问题是,当 rackup 是 运行ning class 并执行这些语句时,设置诸如端口和线程池大小。至于缺少的 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, and 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 [=13=] == app_file
end
然后您可以像任何普通 Ruby 脚本一样 运行 您的应用程序,例如ruby app.rb
。
归根结底,我强烈建议您探索创建 Puma 配置文件并改用它。它只是更简单、更清晰、更易于理解。如果您需要从环境或其他方法或过程的结果中提取 Puma 设置,您可以在其中进行。祝你好运。