Sidekiq 在 Hanami 应用程序上找不到工作人员 class

Sidekiq can't find worker class on Hanami app

我正在尝试使用 sidekiq 在 Hanami 应用程序上异步发送电子邮件。这是我的工人 class:

# lib/myapp/workers/async_mailers.rb

class AsyncMailer
  include Sidekiq::Worker

  def perform(mail_type)
    ...
    # send mail
    ...
  end
end

但是当 Sidekiq 尝试启动 worker 时失败并给出以下消息:

WARN: NameError: uninitialized constant MailWorker

我是 运行 sidekiq,在我的 Procfile 中使用以下命令:

bundle exec sidekiq -e development -r ./config/environment.rb

sidekiq 似乎找不到我的 lib 文件夹。我是 Hanami 的新手,可能忘记在某处添加一些配置,但我一直无法弄清楚到底该怎么做才能解决这个问题。

hanami comunity chat 中进行一些挖掘,我最终发现使用 hanami 调用 sidekiq 的正确方法是使用 boot.rb 文件进行配置。所以你应该 运行 像这样:

bundle exec sidekiq -e development -r ./config/boot.rb

你是对的。只需使用 -r ./config/boot.rb 选项启动 sidekiq 服务器:

https://github.com/hanami/contributors/blob/master/Procfile#L2