我又带着我的 ctrlpanel 应用程序回来了。
我让它 100% 处于开发状态,并完成了将其加载到 Heroku 并安装了应用程序、安装 gems 的过程。数据库(大部分)都在那里,但我什至在数据库之前就遇到了问题。我在处理 devise_invitable 时遇到错误,但我在开发中没有遇到该错误。令我惊讶的是,当我在笔记本电脑上启动生产时,我确实遇到了同样的错误,这至少让我感到震惊,因为在开发中一切都很完美。所以我知道这不是 Heroku 问题,我很高兴至少可以重现它。完整的错误如下,但专门处理该错误的行是:
"C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader/callbacks.rb:18:in `on_file_autoloaded': expected file D:/rails/ctrlpanel/app/controllers/invitations_controller.rb to define constant InvitationsController, but didn't (Zeitwerk::NameError)C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader/callbacks.rb:18:in `on_file_autoloaded': expected file D:/rails/ctrlpanel/app/controllers/invitations_controller.rb to define constant InvitationsController, but didn't (Zeitwerk::NameError)"
Run Code Online (Sandbox Code Playgroud)
我在网上做了一些搜索(实际上很多),我唯一能找到的就是建议将invitations_controller.rb文件复制到controllers文件夹下一个名为users的文件夹中,我确实尝试过,我复制了它实际上我也尝试过移动它。两者都没有帮助。这在开发中可以正常工作。所以我开始比较这两个环境文件。
我通过更改这两个条目来克服它:
config.cache_classes = false in production.rb
config.eager_load = false in production.rb
Run Code Online (Sandbox Code Playgroud)
然而,我到处都看到帖子说关闭这两个选项是非常糟糕的,它会以某种方式影响视图,果然我的引导程序都是球童使用的,我只能假设是由于这两个选项被关闭。我确信其他人以前一定见过这个,但我似乎找不到任何东西。我检查了 devise_invitable 文档,将其更新为 av .02 更高(没有效果)。
错误太长,我很难找到一个好的搜索词来获得结果。
我很困惑,因为一切都必须正确,否则在开发中就无法正常工作,或者我不这么认为?如果需要查看任何其他文件,请告诉我,我很乐意显示它。
预先感谢您提供的任何帮助或建议。
斯科特
这是错误:
scottm@RED-IT-LAP-0001 MINGW64 /d/rails/ctrlpanel (master)
$ rails server -e production
=> Booting Puma
=> Rails 6.1.3.2 application starting in production
=> …Run Code Online (Sandbox Code Playgroud)