Reputation: 9499
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.
Upvotes: 11
Views: 10454
Reputation: 1109
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.
Upvotes: 3
Reputation: 6834
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.
Upvotes: 33