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"))
我们正在升级到 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"))