Ruby on rails Sidekiq+;sidekiq_调度程序gem(未初始化的常量worker_类::model)

Ruby on rails Sidekiq+;sidekiq_调度程序gem(未初始化的常量worker_类::model),ruby-on-rails,ruby,sidekiq,Ruby On Rails,Ruby,Sidekiq,我正在一个asyc工作线程上工作,该线程按照设定的时间表发送电子邮件。我有很多后端函数都用到了这个函数中,但我已经建立了一个模型来管理每封电子邮件的数据。该模型在我们的多租户数据库中循环遍历所有租户,抓住所有用户,并在每天午夜后一分钟为他们定制电子邮件。我用宝石 但是,当我通过sidekiq_调度程序设置工作线程时,会出现以下错误: NameError:未初始化的常量RecurringMailer::EmailScheduler /../lib/tasks/recurtive_mailer.rb

我正在一个asyc工作线程上工作,该线程按照设定的时间表发送电子邮件。我有很多后端函数都用到了这个函数中,但我已经建立了一个模型来管理每封电子邮件的数据。该模型在我们的多租户数据库中循环遍历所有租户,抓住所有用户,并在每天午夜后一分钟为他们定制电子邮件。我用宝石

但是,当我通过sidekiq_调度程序设置工作线程时,会出现以下错误:

NameError:未初始化的常量RecurringMailer::EmailScheduler /../lib/tasks/recurtive_mailer.rb:6:in'perform'

这是我的工人类RecurringMailer(lib/tasks/recurtive_mailer.rb)

当工作线程尝试首先从EmailScheduler.daily_scheduler上的模型访问该方法时,会引发错误

以下是EmailScheduler模型(app/assets/models/email_scheduler.rb)的基本shell

当我启动服务器时,我运行

bundle exec sidekiq -r ./lib/tasks/recurring_mailer.rb

关于如何让我的模型与sidekiq工作人员很好地配合,你有什么想法吗?

如果你想访问你的模型,你不应该使用-r标志运行sidekiq。以下是医生对此的看法:

-r、 --require[PATH | DIR]Rails应用程序的位置以及需要的工人或文件

如果要加载整个应用程序,只需按以下方式运行:

bundle exec sidekiq
module MySite
  class Application < Rails::Application
    config.autoload_paths += %W(#{config.root}/lib)
    config.autoload_paths << Rails.root.join('app', 'field_types')
    config.active_job.queue_adapter = :sidekiq
  end
end
:schedule:
  recurring_mailer:
    cron: '1 0 * * *'
    class: RecurringMailer
bundle exec sidekiq -r ./lib/tasks/recurring_mailer.rb
bundle exec sidekiq