载入错误:无法自动载入常量(Rails + Sidekiq)

3
在我的开发环境中,我遇到了这个错误 :
WARN: LoadError: Unable to autoload constant Alerts::FailedReportWorker, expected /my-path/app/workers/alerts/failed_report_worker.rb to define it.

我在我的schedule.yml文件中有这些工作者:

alert_sla_worker:
  cron: "*/1 * * * *"
  class: "Alerts::SlaWorker"
alert_failed_export_worker:
  cron: "*/1 * * * *"
  class: "Alerts::FailedExportWorker"
alert_failed_report_worker:
  cron: "*/1 * * * *"
  class: "Alerts::FailedReportWorker"
alert_failed_extractor_worker:
  cron: "*/1 * * * *"
  class: "Alerts::FailedExtractorWorker"

我的文件夹结构如下:
workers
 alerts(folder)
  failed_export_worker.rb
  failed_extractor_worker.rb
  failed_report_worker.rb
  sla_worker.rb

并且 failed_report_worker.rb :

# frozen_string_literal: true

module Alerts
  class FailedReportWorker
    include Sidekiq::Worker

    sidekiq_options queue: :default, retry: 0

    def perform
        ...
    end
  end
end

我该如何解决这个问题?我不确定我缺少了什么!


failed_report_worker.rb 是什么样子? - Roman Alekseiev
很奇怪它只抱怨那个工人。你能试着重启一下吗?你能仔细检查一下文件名或类名是否有错别字吗? - Olkin
@Olkin 我已经做过了 :( 。我的同事们拉取了代码,他们也遇到了同样的问题。可能是我的自动加载配置有问题吗?最奇怪的是,这种情况并不是每次工作程序启动时都会发生,只有五分之一的概率... - Benjamin
workers文件夹位于哪里?就在app下面吗? - Olkin
@Olkin 是的,应用程序 > 工作者 > 警报 > files.rb - Benjamin
显示剩余2条评论
1个回答

6
可能是自动加载的问题...我最近遇到了这种问题。 尝试执行以下操作: 在workers目录下添加一个名为alerts.rb的文件,并将以下代码添加到其中:
# frozen_string_literal: true

module Alerts; end

如果可以帮助的话,那就太好了。


嘿!看起来它解决了我的问题,真的很奇怪...我会等一会儿看看错误是否再次出现。如果没有,我会将您的答案标记为解决方案。非常感谢! - Benjamin
2
这个要求似乎从Rails 5.2.0开始强制执行。有关更多详细信息,请参阅此SO答案 - Jeff Sheffel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接