我目前正在将旧的 Rails 应用程序迁移到 Rails 6。
项目中的某些文件似乎与其中定义的类不一致。运行应用程序测试时我没有看到此错误,但在部署后我收到如下错误:
Zeitwerk::NameError: expected file /app/my?_/app/lib/multi_io.rb to define constant MultiIo, but didn't
在之前的 SO 问题中,我可以找到以下建议:
- Rails 6:Zeitwerk::NameError 不从模块集中加载类
config.autoloader = :classic
- 如何忽略 Zeitwerk for Rails 6 中的文件夹?忽略给定的路径
- Rails 6 中的自动加载和 Zeitwerk 模式调整
config.autoload_path
我不是在寻找解决方法,所以我更正了引发异常的文件。
我想找到一种编程方式来检测所有不一致的路径/类名,而无需在生产模式下运行应用程序。
到目前为止,我想到了三个选项:
- 用于验证自动加载的 rake 任务(gem 不提供)。它存在吗?您是否有一个片段可以从开发环境中的 rails 控制台运行?
- 一个 rubocop 警察或其他静态代码分析器。有吗?
- 在测试环境中强制进行急切加载
在不需要多次迭代/部署的情况下验证我的代码的建议方法是什么?
非常感谢你