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

时间:2012-08-15 17:19:42

标签: redis resque

我正在使用Resque进行几个异步作业。我已经设置了一个自定义环境integration,它是我production环境的克隆。但是,ResqueRedis工作未在我的integration环境中添加到$ RAILS_ENV=production rails console > Resque.enqueue(MyLovelyJob, 1)

例如,如果我运行以下内容:

$ RAILS_ENV=integration rails console
> Resque.enqueue(MyLovelyJob, 1)

我会看到这份工作出现在resque-web。

但是,如果我运行以下内容:

{{1}}

该作业未出现在resque-web中。

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

2 个答案:

答案 0 :(得分:0)

首先没什么期望。

您有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

config/resque.yml或类似的:

development: localhost:6379
test: localhost:6379
integration: localhost:6379
staging: localhost:6379
production: localhost:6379

integration将与其他服务器通信/通信或使用其他端口。然后你就可以运行它自己的Redis服务器,这样2就不会重叠了。 我认为你不希望生产和集成排队到同一个地方?

答案 1 :(得分:0)

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

我使用以下内容创建了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(显然这些内容应设置为适当的内容):

development: localhost:6379
test: localhost:6379
integration: localhost:6379
staging: localhost:6379
production: localhost:6379