Sidekiq将任务发送到测试队列而不是开发队列

12

我已经使用rspec添加了规范以覆盖sidekiq作业,但现在,当我启动rails服务器、控制台或仅仅是sidekiq时,我会收到这个警告:

WARNING: Sidekiq testing API enabled, but this is not the test environment.  Your jobs will not go to Redis.

而作业确实没有排队。

我该如何切换回开发API?


1
你是如何在你的应用程序中集成Sidekiq测试的? - kiddorails
5
请勿在任何地方(除了rails_helper/spec_helper/test_helper或您使用的任何全局测试设置文件)调用require 'sidekiq/testing' - Sergio Tulentsev
我也遇到了同样的问题,而且我只需要在我的 spec_helper 中引用它。你找到解决方法了吗? - Cojones
1
还要在初始化文件和/或特定于环境的文件中查找require 'sidekiq/testing/inline',例如config/environments/development.rb - Edgar Ortega
4个回答

27

你可能需要检查一下是否在 :development 组中包含了 gem 'rspec-sidekiq'。如果是这样的话,请将其从那里移除,只在 :test 组中调用它。


我希望4个小时前就发现了这个。谢谢! - TerryS
你应该将这个答案作为正确答案接受。 - Ritchie

1

我们在这里遇到了同样的问题,由于我们的开发和测试环境在一个docker化的容器中共享相同的gems,所以我们需要采用不同的解决方法:

  1. 在Gemfile中关闭rspec-sidekiq gem的自动引用
gem "rspec-sidekiq", ~> "3.1.0", require: false
  1. 只需在spec/rails_helper.rb中要求它。
require "rspec-sidekiq"

1

继托马斯上面的答案之后,如果你在Gemfile中找不到rspec-sidekiq gem,请检查你项目代码的任何部分(例如sidekiq初始化器)是否有以下代码:

 require 'sidekiq/testing'
 Sidekiq::Testing.inline!

0

在使用sidekiqswarm和预加载test宝石时,我发现了这个错误。

一旦我进行了修改,它就完美运行了。

之前:

worker: SIDEKIQ_COUNT=5 SIDEKIQ_MAXMEM_MB=300 SIDEKIQ_PRELOAD=default,development,test sidekiqswarm -C config/sidekiq.yml

之后:

worker: SIDEKIQ_COUNT=5 SIDEKIQ_MAXMEM_MB=300 SIDEKIQ_PRELOAD=default,development sidekiqswarm -C config/sidekiq.yml```

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接