ruby-on-rails - Rails 5.2 和 Sidekiq:找不到工人阶级
问题描述
我有一个名为release_monitor_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)中调用这个工作人员,如下所示:
class NewReleasesController < ApplicationController
def index
ReleaseMonitorAddWorker.perform_async
end
end
我启动 redis,然后启动 sidekiq,然后运行 rails s。触发该控制器方法时出现以下错误:uninitialized constant NewReleasesController::ReleaseMonitorAddWorker
这里发生了什么?
解决方案
您的类名 ( ReleaseMonitorAddWorker
) 和包含文件名 ( release_monitor_worker.rb
) 不匹配。将您的文件重命名为release_monitor_add_worker.rb
或将您的类重命名为ReleaseMonitorWorker
,它将起作用。
推荐阅读
- javascript - 从函数内部忽略 Typescript 中的多个连续函数调用?
- java - 是否可以使用 findbugs 的代码分析来检索在 java 中的函数调用中传递的变量的名称
- flyway - FLYWAY:无法基线
- angular - 带有 json 对象的 Angular 单选按钮 patchValue
- python - 在 Python 3.7 中使用工厂函数生成注释类型时出现“typing.ClassVar”的问题
- asp.net-core - Asp.Net core Swashbuckle 设置 operationId
- chatbase - Chatbase 证书已于 9 月 7 日到期
- symfony - 如何使用 QueryBuilder 在 Symfony 上构建此查询?
- python - 删除 URL/电子邮件中的所有空格
- javascript - 如果div被点击,隐藏元素