在单独的选项卡中,我正在运行
bundle exec sidekiq
在我正在运行的另一个选项卡中:
SendWithUsInviteeMailerJob.perform_async(invitee.id)
这开始了这里的工作:
class SendWithUsInviteeMailerJob
include Sidekiq::Worker
sidekiq_options queue: :mailer, retry: 2
def perform(invitee_id)
SendWithUsInviteeMailer.welcome(invitee_id).deliver
end
end
如何确定该作业是否已在 sidekiq 中排队?说这是一个测试环境。我基本上想看到这项工作是出于测试目的而排队的。
这是我的 gemfile:
...
gem 'sidekiq'
gem 'redis'
...
在我的spec_helper中:
require 'sidekiq/testing'
config.before(:each) do
Sidekiq::Worker.clear_all
end
end
Sidekiq::Testing.fake!
有多种方法可以做到这一点。一种方法是使用
Sidekiq::Web
,这是一个很好的图形界面,用于查看计划的、排队的、忙碌的、已处理的、重试的和失败的作业:
https://github.com/mperham/sidekiq/wiki/Monitoring
另一种方法是使用终端。运行
redis-server
和 sidekiq
启动服务。现在,在 Rails cusole 中输入 SendWithUsInviteeMailerJob.perform_async
来执行作业,然后该作业将显示在运行 sidekiq 的终端窗格中。
或者,在 Rails 控制台中调用
Sidekiq::enqued_jobs(queue: :mailer)
来获取一系列邮件程序作业。然而,对于快速作业,您需要同样快速地输入,以便在作业被发送到繁忙作业 (Sidekiq::busy_jobs
) 并被执行之前捕获作业。