通过切换到 Zeitwerk 自动加载器(Ruby 2.7.5 上的 Rails 6.1.4.4)为 Rails 7 做好准备。关闭了config.autoloader = :classic
application.rb中的线路。应用程序正在加载 6.1 默认值。
开发模式运行良好,但启动时生产失败(在生产模式下本地也失败):
pid=4 tid=2l2g WARN: Zeitwerk::NameError: expected file /app/app/navigation_renderers/public_issue_renderer.rb to define constant PublicIssueRenderer, but didn't
pid=4 tid=2l2g WARN: /app/vendor/bundle/ruby/2.7.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader/callbacks.rb:25:in `on_file_autoloaded'
(这是在暂存环境中的 Heroku-20 上)。
但是,该文件确实将其定义为一个类:
module SimpleNavigation
module Renderer
class PublicIssueRenderer < SimpleNavigation::Renderer::Base
[functions removed for brevity]
end
end
end
我不确定为什么双重/app/app
存在,因为该目录只是在应用程序中以及其他所有内容: