uninitialized constant sidekiq worker
Asked Answered
A

2

10

New rails project.

Rails 5.0.2 Sidekiq 4.2.10

I ran rails g sidekiq:worker deposit_collector and then filled out the code I needed inside the perform method.

To test I logged into the rails console and typed: DepositCollector.perform_async and I get the error:

NameError: uninitialized constant DepositCollectorWorker

The worker is where it should be in the app/workers/ folder. I've used sidekiq on several projects before and have never run into this.

Apgar answered 5/5, 2017 at 2:4 Comment(1)
I ran into an issue and it was because rails wanted the worker file to end in worker.rbDigastric
J
33

By default, Rails will include all subdirectories of the app folder in the autoload paths list. You can review the list of autoload paths in the console with:

puts ActiveSupport::Dependencies.autoload_paths

But Rails only looks for these paths at boot time. So when you add a new folder, like app/workers, it is not enough to restart the Rails console. You need to both exit the Rails console and stop the Spring Application Preloader with:

spring stop

Then start up the Rails console again and the files in the app/workers folder will load properly.

Jealous answered 6/5, 2017 at 2:52 Comment(0)
M
3

I didn't have spring installed so I took the lazy approach and turned on eager loading in my config/environments/development.rb file:

config.eager_load = true

and then turned it back to false after restarting my server.

Morly answered 27/3, 2020 at 18:29 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.