Redis Rails自定义环境Resque.enqueue不创建作业

Redis Rails自定义环境Resque.enqueue不创建作业,redis,resque,Redis,Resque,我正在使用Resque进行几个异步作业。我已经设置了一个自定义环境集成,它是我的生产环境的克隆。但是,我的Resque作业不会添加到我的integration环境中的Redis 例如,如果我运行以下命令: $ RAILS_ENV=production rails console > Resque.enqueue(MyLovelyJob, 1) $ RAILS_ENV=integration rails console > Resque.enqueue(MyLovelyJob, 1)

我正在使用
Resque
进行几个异步作业。我已经设置了一个自定义环境
集成
,它是我的
生产
环境的克隆。但是,我的
Resque
作业不会添加到我的
integration
环境中的
Redis

例如,如果我运行以下命令:

$ RAILS_ENV=production rails console
> Resque.enqueue(MyLovelyJob, 1)
$ RAILS_ENV=integration rails console
> Resque.enqueue(MyLovelyJob, 1)
我会在resque网站上看到这份工作

但是,如果我运行以下命令:

$ RAILS_ENV=production rails console
> Resque.enqueue(MyLovelyJob, 1)
$ RAILS_ENV=integration rails console
> Resque.enqueue(MyLovelyJob, 1)
该作业不会出现在resque web中


很明显,我错过了某种配置,我正在努力弄清楚它是什么。

首先是一些期望

您有一个
config/resque_config.rb
或类似的配置:

require 'rubygems'

require 'resque' # include resque so we can configure it
require 'resque/server'
require 'resque_scheduler'
require 'resque_scheduler/server'
require 'yaml'

Resque.redis.namespace = "resque:api"

rails_root = ENV['APP_ROOT'] || (File.dirname(__FILE__) + '/..')
# require File.expand_path(File.join(rails_root,"lib","extensions","resque","worker.rb"))

rails_env = RAILS_ENV if defined? RAILS_ENV
rails_env ||= ( ENV['RAILS_ENV'] || 'development' )

resque_config = YAML.load_file(File.join(rails_root, 'config/resque.yml'))
Resque.redis = resque_config[rails_env]

# IN THIS ORDER
Resque::Scheduler.dynamic = true
Resque.schedule = YAML.load_file(File.join(rails_root, 'config/resque_schedule.yml')) # load the schedule
development: localhost:6379
test: localhost:6379
integration: localhost:6379
staging: localhost:6379
production: localhost:6379
development: localhost:6379
test: localhost:6379
integration: localhost:6379
staging: localhost:6379
production: localhost:6379
config/resque.yml
或类似文件:

require 'rubygems'

require 'resque' # include resque so we can configure it
require 'resque/server'
require 'resque_scheduler'
require 'resque_scheduler/server'
require 'yaml'

Resque.redis.namespace = "resque:api"

rails_root = ENV['APP_ROOT'] || (File.dirname(__FILE__) + '/..')
# require File.expand_path(File.join(rails_root,"lib","extensions","resque","worker.rb"))

rails_env = RAILS_ENV if defined? RAILS_ENV
rails_env ||= ( ENV['RAILS_ENV'] || 'development' )

resque_config = YAML.load_file(File.join(rails_root, 'config/resque.yml'))
Resque.redis = resque_config[rails_env]

# IN THIS ORDER
Resque::Scheduler.dynamic = true
Resque.schedule = YAML.load_file(File.join(rails_root, 'config/resque_schedule.yml')) # load the schedule
development: localhost:6379
test: localhost:6379
integration: localhost:6379
staging: localhost:6379
production: localhost:6379
development: localhost:6379
test: localhost:6379
integration: localhost:6379
staging: localhost:6379
production: localhost:6379
集成
将打开/与不同的服务器通信或使用不同的端口。然后让它运行自己的Redis服务器,这样2个服务器就不会重叠。
我想您不想让生产和集成在同一个地方排队?

这就是我为解决问题所做的:

我用以下内容创建了
config/initializers/resque.rb

rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/../..'
rails_env = ENV['RAILS_ENV'] || 'development'

resque_config = YAML.load_file(rails_root + '/config/resque.yml')
Resque.redis = resque_config[rails_env]
我还创建了带有以下内容的
config/resque.yml
(显然,这些内容应该设置为适当的值):