mab*_*e02 2 ruby ruby-on-rails ruby-on-rails-6 zeitwerk
我目前正在将旧的 Rails 应用程序迁移到 Rails 6。
好像项目中有些文件和里面定义的类不一致。运行应用程序测试时我没有看到此错误,但在部署后我收到如下错误:
Zeitwerk::NameError: expected file /app/my?_/app/lib/multi_io.rb to define constant MultiIo, but didn't
Run Code Online (Sandbox Code Playgroud)
在以前的 SO 问题中,我可以找到以下建议:
config.autoloader = :classicconfig.autoload_path我不是在寻找解决方法,所以我更正了引发异常的文件。
我想找到一种编程方式来检测所有不一致的路径/类名,而无需在生产模式下运行应用程序。
到目前为止,我想到了三个选项:
在不需要多次迭代/部署的情况下验证我的代码的建议方法是什么?
非常感谢你提前
您可以使用zeitwerk::check任务检查项目的自动加载兼容性:
$ bin/rails zeitwerk:check
Hold on, I am eager loading the application.
All is good!
Run Code Online (Sandbox Code Playgroud)
它会执行所有自动加载路径,并将标记一些问题,例如由常量名称推断中的更改(例如具有首字母缩写词的那些)引起的问题。除了在升级指南中,该任务似乎没有被广泛宣传或记录。但是,我实际上有时会使用它来清除项目中的常量命名问题(即,类与文件不匹配的地方)。
| 归档时间: |
|
| 查看次数: |
536 次 |
| 最近记录: |