Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Sidekiq未连接到轨道_Ruby On Rails_Ruby On Rails 3_Redis_Sidekiq - Fatal编程技术网

Ruby on rails Sidekiq未连接到轨道

Ruby on rails Sidekiq未连接到轨道,ruby-on-rails,ruby-on-rails-3,redis,sidekiq,Ruby On Rails,Ruby On Rails 3,Redis,Sidekiq,我在从Resque转换到Sidekiq时遇到问题。虽然perform\u async(ids)没有向Redis添加任何内容,但我没有收到任何错误。我可以通过Redis.current.append(“test”,“key”) 此外,我的Sidekiq worker还连接到Redis服务器,不过当我请求Sidekiq::Client.registered_workers时,我得到一个空数组。web UI仅显示框架,除Redis信息外,没有其他信息。我不知道这是否重要,但是Sidekiq.redis

我在从Resque转换到Sidekiq时遇到问题。虽然
perform\u async(ids)
没有向Redis添加任何内容,但我没有收到任何错误。我可以通过
Redis.current.append(“test”,“key”)
此外,我的Sidekiq worker还连接到Redis服务器,不过当我请求
Sidekiq::Client.registered_workers
时,我得到一个空数组。web UI仅显示框架,除Redis信息外,没有其他信息。我不知道这是否重要,但是
Sidekiq.redis{| conn | conn.info}
返回的信息在我的本地redis服务器上都是正确的。虽然
Sidekiq.server?
返回一个nil值


更新:当我执行
perform\u async(args)
时,它返回一个字符串。

听起来您的Sidekiq配置没有为Sidekiq的客户端和服务器组件使用相同的redis配置

客户机在Rails应用服务器中执行,而服务器是一个独立的进程,在该进程中执行工作。如果它们通过redis配置不使用相同的redis队列,则不会处理工作

下面是一个示例
config/initializers/sidekiq.rb
config块,对两个组件使用相同的redis:

redis = { url: (ENV['REDIS_URL'] || 'redis://127.0.0.1'), namespace: 'sidekiq' }

Sidekiq.configure_server do |config|
  config.redis = redis
end

Sidekiq.configure_client do |config|
  config.redis = redis
end

我猜您的客户端和服务器配置之间有不同的名称空间或配置。

我遇到了相同的问题

事实证明,我在我的
Gemfile
development
组中配置了
rspec sidekiq
,并且显然中断了异步调用以进行测试

解决方案是修改我的
Gemfile

gem 'rspec-sidekiq', group: :test, require: false

最后,我在我的
spec\u helper.rb
中添加了
require'rspec sidekiq'

明显的问题:您运行的是最新的sidekiq(2.14.1),是否安装了Redis 2.4或更高版本?您至少使用了Ruby 1.9.3?对不起,我已经有了一个
sidekiq.rb
,它将服务器和客户端配置为相同的命名空间和Redis地址。