Rails 自定义中间件从 6.0 升级到 6.1 后无法识别

问题描述 投票:0回答:2

我的 Rails 应用程序中有一个名为 LocaleMiddleware 的自定义中间件,它曾经在 Rails 6.0 中正常工作,但出现

uninitialized constant LocaleMiddleware
错误。我检查了文档(发行说明),但没有看到任何与自定义中间件更改相关的内容。我按照这篇文章编写了中间件https://ieftimov.com/post/writing-rails-middleware/

ruby-on-rails
2个回答
1
投票

只需在您调用它的位置添加

require_relative "../app/lib/middlewares/my_middle_ware.rb"
,它可能在
config/application.rb


0
投票

Ruby on Rails 一直提供自动加载系统,但它有一些限制,导致了 Zeitwerk 的引入。

您需要在 config/application.rb 中添加以下行

config.autoloader = :zeitwerk

并运行以下命令:

rails zeitwerk:check --trace

在某些情况下,您可能仍然需要在应用程序中手动请求文件。当您的文件不遵循 Zeitwerk 要求的严格命名约定时,或者当您需要在 Zeitwerk 有机会自动加载文件之前加载文件时,这通常是必要的。

作为参考,您可以阅读以下文章。

Ruby on Rails 中的 Zeitwerk

© www.soinside.com 2019 - 2024. All rights reserved.