【发布时间】:2012-06-13 15:35:08
【问题描述】:
几天来我一直在试图找出问题所在,但没有运气,我正在使用 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):
任何帮助将不胜感激,谢谢。
【问题讨论】:
标签: ruby-on-rails ruby heroku redis resque