几天来我一直试图弄清楚问题出在哪里,但没有运气,我正在使用 Unicorn 在 Heroku Cedar 上运行 Rails 3.1.3,并使用 Resque 1.20 进行后台作业。
添加了 Redis 附加组件并设置了 REDISTOGO_URL,我将 resque.rb 初始化程序设置为
require 'resque'
Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }
uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Resque.redis = REDIS
我也试过
Resque.redis = Redis.connect(:url => ENV['REDISTOGO_URL'])
还有这个,来自官方 RedisToGo 网站
ENV["REDISTOGO_URL"] ||= "redis://username:password@host:1234/"
uri = URI.parse(ENV["REDISTOGO_URL"])
Resque.redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password, :thread_safe => true)
Heroku工人为:
bundle exec rake resque:work QUEUE='*'
在本地和 Heroku 控制台中一切正常;但是当我尝试从 Rails 排队时
Resque.enqueue(EmailQueue, id)
我明白了
NoMethodError (undefined method `sadd' for nil:NilClass):
请任何帮助将不胜感激,谢谢。