Rails 6 + Zeitwerk,没有 class 加载文件

Rails 6 + Zeitwerk, loading files without class

我们正在升级到 Rails 6,并且已经完成了使我们的应用程序与 Zeitwerk 兼容的大部分工作。

我们确实有两个文件,它们是查询对象,存在于 app/queries 下,我们没有为它们定义 class。它们仅与方法一起存在。

但是,Zeitwerk 希望文件定义一个常量,但我们认为没有必要。

有什么方法可以告诉 Zeitwerk 我们要按原样加载这些文件吗?

您可以告诉主自动加载器忽略它们:

# config/initializers/zeitwerk.rb
Rails.autoloaders.main.ignore(
  Rails.root.join("app/queries/foo.rb"),
  Rails.root.join("app/queries/bar.rb")
)

然后应用程序负责使用 require 或其他方式加载它们。

如果要忽略 app/queries 下的所有内容,您可以忽略目录本身:

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