Ruby on Rails中未初始化的sidekiq工作者如何处理?

更新于
2026-10-03 19:43:39
0阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计242个文字,预计阅读时间需要1分钟。

新铁轨项目。使用Rails 5.0.2和Sidekiq 4.2.10。执行`rails g sidekiq`生成worker:`deposit_collector`。在`perform`方法中填写了所需的代码。为测试,登录Rails控制台,输入`DepositCollector.perform_async`并按回车。

新的铁轨项目.

Rails 5.0.2
Sidekiq 4.2.10

我运行了rails g sidekiq:worker deposit_collector,然后在perform方法中填写了我需要的代码.

为了测试我登录到rails控制台并键入:DepositCollector.perform_async并且我收到错误:

NameError: uninitialized constant DepositCollectorWorker

工作者应该在app / workers /文件夹中.我以前在几个项目中使用过sidekiq,但从未碰到过这个问题.

默认情况下,Rails将包含 autoload paths列表中app文件夹的所有子目录.您可以在控制台中查看自动加载路径列表:

puts ActiveSupport::Dependencies.autoload_paths

但是Rails只在启动时查找这些路径.因此,当您添加新文件夹(如app / workers)时,重新启动Rails控制台是不够的.您需要退出Rails控制台并使用以下命令停止Spring Application Preloader:

spring stop

然后再次启动Rails控制台,app / workers文件夹中的文件将正确加载.

标签:恒定sid

本文共计242个文字,预计阅读时间需要1分钟。

新铁轨项目。使用Rails 5.0.2和Sidekiq 4.2.10。执行`rails g sidekiq`生成worker:`deposit_collector`。在`perform`方法中填写了所需的代码。为测试,登录Rails控制台,输入`DepositCollector.perform_async`并按回车。

新的铁轨项目.

Rails 5.0.2
Sidekiq 4.2.10

我运行了rails g sidekiq:worker deposit_collector,然后在perform方法中填写了我需要的代码.

为了测试我登录到rails控制台并键入:DepositCollector.perform_async并且我收到错误:

NameError: uninitialized constant DepositCollectorWorker

工作者应该在app / workers /文件夹中.我以前在几个项目中使用过sidekiq,但从未碰到过这个问题.

默认情况下,Rails将包含 autoload paths列表中app文件夹的所有子目录.您可以在控制台中查看自动加载路径列表:

puts ActiveSupport::Dependencies.autoload_paths

但是Rails只在启动时查找这些路径.因此,当您添加新文件夹(如app / workers)时,重新启动Rails控制台是不够的.您需要退出Rails控制台并使用以下命令停止Spring Application Preloader:

spring stop

然后再次启动Rails控制台,app / workers文件夹中的文件将正确加载.

标签:恒定sid