2

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

# 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

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

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

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

4

2 回答 2

4

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

bundle exec sidekiq -e development -r ./config/boot.rb
于 2017-08-11T15:40:09.820 回答
1

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

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

于 2018-05-03T13:34:57.357 回答