我的 Rails 应用程序中有一个名为 LocaleMiddleware 的自定义中间件,它曾经在 Rails 6.0 中正常工作,但出现
uninitialized constant LocaleMiddleware
错误。我检查了文档(发行说明),但没有看到任何与自定义中间件更改相关的内容。我按照这篇文章编写了中间件https://ieftimov.com/post/writing-rails-middleware/
只需在您调用它的位置添加
require_relative "../app/lib/middlewares/my_middle_ware.rb"
,它可能在config/application.rb
中
Ruby on Rails 一直提供自动加载系统,但它有一些限制,导致了 Zeitwerk 的引入。
您需要在 config/application.rb 中添加以下行
config.autoloader = :zeitwerk
并运行以下命令:
rails zeitwerk:check --trace
在某些情况下,您可能仍然需要在应用程序中手动请求文件。当您的文件不遵循 Zeitwerk 要求的严格命名约定时,或者当您需要在 Zeitwerk 有机会自动加载文件之前加载文件时,这通常是必要的。
作为参考,您可以阅读以下文章。