【问题标题】:LoadError: Unable to autoload constant (Rails + Sidekiq)LoadError:无法自动加载常量(Rails + Sidekiq)
【发布时间】:2020-08-27 02:43:25
【问题描述】:

在我的开发环境中,我收到此错误:

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 长什么样子?
  • @RomanAlekseiev 我已经编辑了原帖 :)
  • 奇怪的是它只抱怨那个工人。可以尝试重启吗?你能再三检查你的文件名或类名没有错字吗?
  • @Olkin 我已经这么做了每次工人开始时都会发生,只有5次中的1次......
  • 测试config.autoload_paths += Dir[config.root.join('app', 'workers', '**/*.rb')]

标签: ruby-on-rails ruby cron sidekiq


【解决方案1】:

自动加载可能有问题...我最近遇到过这类问题。 尝试这样做: 在workers 目录下添加一个名为alerts.rb 的文件,其中包含以下代码:

# frozen_string_literal: true

module Alerts; end

如果有帮助就好了

【讨论】:

  • 嘿!它似乎解决了我的问题,这真的很奇怪..我会稍等一下,看看错误是否再次出现。如果不是,我会将您的答案标记为解决方案。非常感谢!
  • 这个要求似乎从 Rails 5.2.0 开始强制执行。更多详情请参考this SO answer
猜你喜欢
  • 2019-03-14
  • 2019-08-19
  • 1970-01-01
  • 2016-04-13
  • 2020-03-31
  • 1970-01-01
  • 2017-10-22
  • 2014-05-11
  • 2016-04-18
相关资源
最近更新 更多