gpt4 book ai didi

ruby rack - 无法在中间件中修改 ARGV?

转载 作者:数据小太阳 更新时间:2023-10-29 07:39:36 25 4
gpt4 key购买 nike

我似乎无法在预处理的 Rack 中间件中附加到 ARGV。有人知道中间件存在时 Rack 如何处理 ARGV 吗?如何在我的中间件中修改 ARGV?必须有办法做到这一点,我完全不知所措。

ARGV << "--debug"
ARGV << "--host" << "localhost"

class Pre
def initialize(app)
@app = app
end

def call(env)
if some_env_related_logic
ARGV << "--test"
end
@app.call(env)
end

end

require 'Somecommand'

use Pre
run Somecommand

现在,“--test”参数不会添加到 Somecommand 中可用的 ARGV 中。

更新:

似乎 Somecommand 应用程序在初始化方法中使用了 ARGV。那发生在第一个中间件之前。所以现在的问题是:如何创建调用第二个 Rack 应用程序的 Rack 应用程序?因为我需要在实例化秒 Rack 应用程序之前评估 ENV。

最佳答案

尝试以下操作:

class Pre
def initialize(app)
@app = app
end

def call(env)
# To be safe, reset the ARGV and rebuild, add any other items if needed
ARGV.clear
ARGV << "--debug"
ARGV << "--host" << "localhost"

if some_env_related_logic
ARGV << "--test"
end
Somecommand.new.call(env)
end
end

require 'Somecommand'

# Note the change, Somecommand is no longer mentioned here
run Pre

关于ruby rack - 无法在中间件中修改 ARGV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18669715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com