Ruby on rails Rails 5.2和Sidekiq:Can';我找不到工人阶级
我有一个名为Ruby on rails Rails 5.2和Sidekiq:Can';我找不到工人阶级,ruby-on-rails,redis,sidekiq,Ruby On Rails,Redis,Sidekiq,我有一个名为release\u monitor\u worker.rb的工作人员保存在app/workers/下。看起来是这样的: class ReleaseMonitorAddWorker include Sidekiq::Worker sidekiq_options retry: false require 'watir' require 'nokogiri' require 'open-uri' def parse_url(url) puts "Begi
release\u monitor\u worker.rb的工作人员保存在app/workers/
下。看起来是这样的:
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
然后,我从我的NewReleasesController(名为new_releases_controller.rb)调用这个worker,如下所示:
classnewreleasescontroller
我启动redis,然后sidekiq,然后运行rails s。触发该控制器方法时,我遇到以下错误:uninitialized constant NewReleasesController::ReleaseMonitorAddWorker
这是怎么回事?类名(ReleaseMonitorAddWorker
)和包含文件名(release\u monitor\u worker.rb
)之间不匹配。将您的文件重命名为release\u monitor\u add\u worker.rb
,或者将您的类重命名为ReleaseMonitorWorker
,它就会工作 类名(ReleaseMonitorAddWorker
)和包含文件名(release\u monitor\u worker.rb
)之间不匹配。将您的文件重命名为release\u monitor\u add\u worker.rb
,或者将您的类重命名为ReleaseMonitorWorker
,它就会工作
class NewReleasesController < ApplicationController
def index
ReleaseMonitorAddWorker.perform_async
end
end