gpt4 book ai didi

ruby-on-rails - 为什么添加这样的 Rails 中间件会导致无休止的重定向?

转载 作者:行者123 更新时间:2023-12-04 15:02:31 25 4
gpt4 key购买 nike

我正在尝试将一些中间件添加到我正在处理的 Rails 项目中,当我尝试这样做时,它似乎会导致无限循环。

具体来说,我有以下中间件 shell 文件:

# app/middleware/log_data.rb

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

def call(env)
# To-do: Write code here.
end
end

然后我在 app 目录下创建了一个新的 middleware 目录,并将文件放在该目录中。

之后,我在 config/application.rb 的底部添加了以下内容:

config.middleware.use("LogData")

在使用 sudo service puma restart 重新启动在 Vagrant 上运行的 Puma 服务器后,如果我运行 rake middleware,我可以看到中间件正确地显示在列表中底部。

但是,当我尝试刷新网站时,它因无限循环而失败,并在 Chrome 中显示以下内容:

enter image description here

如果我注释掉 config/application.rb 中的 config.middleware.use("LogData") 行,那么中间件就会从 rake 中消失中间件命令列表,网站停止崩溃并正常加载。

我做错了什么?我错过了什么?我想这很简单,但我不确定为什么一个简单(且为空)的 shell 中间件文件会导致整个站点崩溃。谢谢。

我应该注意,我使用的是 Rails 4.2.11,我知道它很旧,但现在升级不是一个选项。

最佳答案

您的中间件什么都不做,返回 nil(转换为不完整的服务器响应),基本上请求到此结束。它需要返回一些东西([status, headers, response] 数组,或调用 env)以允许请求通过中间件链。

# app/middleware/log_data.rb

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

def call(env)
# To-do: Write code here.

# this should be at the very end of the method
@app.call(env)
end
end

Here是关于中间件的更多信息。

关于ruby-on-rails - 为什么添加这样的 Rails 中间件会导致无休止的重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66725419/

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