Reputation: 83
I have a worker named release_monitor_worker.rb
saved under app/workers/
. That looks like this:
class ReleaseMonitorAddWorker
include Sidekiq::Worker
sidekiq_options retry: false
require 'watir'
require 'nokogiri'
require 'open-uri'
def parse_url(url)
puts "Beginning navigation to #{url}"
browser = Watir::Browser.new :chrome, headless: true
browser.goto url
puts "Succesfully navigated!"
Nokogiri::HTML.parse(browser.html)
end
def perform
doc = parse_url(URL)
count = doc.xpath('/html/body/div[9]/div/div/div/div/div[2]/div[2]/div[1]/div/div[1]/h1/span')
count.tr('()', '')
binding.pry
end
end
I then call this worker from my NewReleasesController (named new_releases_controller.rb) like so:
class NewReleasesController < ApplicationController
def index
ReleaseMonitorAddWorker.perform_async
end
end
I fire up redis, then sidekiq, and then run rails s. I get the following error when triggering that controller method: uninitialized constant NewReleasesController::ReleaseMonitorAddWorker
What's going on here?
Upvotes: 1
Views: 1283
Reputation: 51151
There's a mismatch between your class name (ReleaseMonitorAddWorker
) and containing file name (release_monitor_worker.rb
). Either rename your file to release_monitor_add_worker.rb
or your class to ReleaseMonitorWorker
and it will work.
Upvotes: 3