未初始化的常数sidekiq工人

时间:2017-05-05 02:04:30

标签: ruby-on-rails ruby-on-rails-5 sidekiq

新的rails项目。

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,但从未遇到过这个问题。

2 个答案:

答案 0 :(得分:13)

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

puts ActiveSupport::Dependencies.autoload_paths

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

spring stop

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

答案 1 :(得分:2)

我没有安装spring,所以我采取了一种懒惰的方法,并打开了我的 config / environments / development.rb 文件中的紧急加载:

config.eager_load = true

,然后在重新启动服务器后将其恢复为false。