在Heroku中运行Resque.enqueue命令时,Heroku尝试通过localhost连接到redis。在config / initializers / redis.rb中,使用$ redis = Redis.new(url:ENV ['REDIS_URL'])设置正确的URL,并且$ redis被实例化而没有错误。在调用enqueue方法的控制器中,$ redis.inspect返回正确的值。
收到的错误是:Redis :: CannotConnectError(连接到localhost上的Redis时出错:6379(Errno :: ECONNREFUSED)):
的Gemfile
gem 'rails', '4.2.6'
gem 'redis', "~> 4.1.0"
gem 'resque', "~> 1.27.3"
配置/初始化/ redis.rb
if Rails.env.production?
$redis = Redis.new(url: ENV['REDIS_URL'])
puts "$redis.inspect => #{$redis.inspect} "
end
LIB /任务/ resque.rake
require "resque/tasks"
task "resque:setup" => :environment
rakefile任务“resque:preload”=>:环境
procfile
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
worker: env QUEUE=* bundle exec rake resque:work
该问题已得到解决,redis指向Heroku中的正确服务器。
在config / initializers / redis.rb中
改变了这个:
$redis = Redis.new(url: ENV['REDIS_URL'])
对此:
$redis = Resque.redis = Redis.new(url: ENV['REDIS_URL'])