Rails 6 上中间件的最佳位置

Best place for Middlewares on Rails 6

我目前正在使用 Rais 6 并使用中间件。我有一些工作,但我不喜欢它。我该如何改进?

目前我的中间件在这里:

app/middleware/my_middleware.rb

然后 config/application.rb 我打电话给

require_relative '../app/middleware/my_middleware

如果没有 require_relative,它是行不通的。如果我将它们添加到 app 文件夹中,它也不起作用。我错过了什么?

无法重新加载中间件,因为中间件堆栈是在应用程序启动期间设置的,从未重建过。

因此,您应该告诉主自动加载器忽略目录:

# config/initializers/zeitwerk.rb
Rails.autoloaders.main.ignore(Rails.root.join("app/middleware"))

并使用 requirerequire_relative 自己加载文件,就像您正在做的那样。

有一些关于这个用例的文档here