我错过了什么,只是不确定是什么。 Sidekiq正常运行,我可以在终端上看到它。
我有这个工人,在app/workers/sqs_worker.rb
class SqsWorker
include Sidekiq::Worker
require 'aws-sdk'
def perform
#do something
end
end
然后在app/test.rb
的测试文件中,我有一个非常简单的代码:
require 'sidekiq'
SqsWorker.new.perform_async
当我运行test.rb
文件时,我收到此错误:uninitialized constant SqsWorker (NameError)
我哪里误入歧途?我正在运行Sidekiq(4.1.4)
我尝试杀死正在运行的进程并重新启动Sidekiq和Redis,但没有运气。
答案 0 :(得分:0)
uninitialized constant SqsWorker (NameError)
表示test.rb
中的脚本无法找到课程SqsWorker
您需要做的只是将require 'sidekiq'
替换为require_relative 'workers/sqs_worker'
,以使您的脚本了解SqsWorker
类的位置。
答案 1 :(得分:0)
可能是你从应用程序范围之外运行了test.rb:
ruby app/test.rb
但为此目的,您需要在测试中添加以下内容:
require 'rubygems'
require 'bundler/setup'
require File.expand_path('../config/environment', __FILE__)
SqsWorker.new.perform_async
按此运行:
bundle exec ruby app/test.rb
你为什么需要这个?因为现在,捆绑器管理添加到您的应用程序的依赖项,因此,您还需要加载rails环境,而最后一个将基本上加载app/
下的所有内容。