机架选项,如何像这样访问传递给机架的选项:$ rackup --option arg1=true

Rack options, how to access options passed to rack like so: $ rackup --option arg1=true

我到处搜索任何 Rack 文档,详细说明如何访问这些选项,文档说您可以像这样传递到 rack 应用程序中:

$ rackup --server thin --env development --option arg1=true

在我的 config.ru 中,我使用 Rack::Cascade 像这样:

Rack::Cascade.new [myapp1, myapp2]

我需要通过命令行上的 rackup 访问传递给 Rack 的选项,并使其可供 Rack::Cascade 中的 Ruby 应用 运行 使用。

机架选项可以通过 [your_rack_server_instance].options 访问。

例如,如果您像下面这样初始化机架服务器:

rack = Rack::Server.new # or Rack::Server.new(options)
rack.options
#=> {:environment=>"development", :Port=>9292, :Host=>"localhost", :config=>"/Users/abc/workspace/xyz/config.ru"}

具体可以看一下它的实现:

Rack::Server

Rack::Builder

仍未找到通过机架服务器实例选项执行此操作的方法。至少不是来自通过机架级联 运行 的模块。

我最终实现同样目标的方法是像这样设置一个环境变量:

env deployment=true rackup --server thin --host 0.0.0.0 --port 4567 --quiet

当然可以从机架级联中的任何模块 运行ning 访问部署选项,如下所示:

ENV['deployment']