在Rails 4应用程序中调用Resque.enqueue时,Heroku连接到Redis localhost

问题描述 投票:0回答:1

在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
ruby-on-rails-4 heroku redis resque
1个回答
0
投票

该问题已得到解决,redis指向Heroku中的正确服务器。

在config / initializers / redis.rb中

改变了这个:

  $redis = Redis.new(url: ENV['REDIS_URL'])

对此:

  $redis = Resque.redis = Redis.new(url: ENV['REDIS_URL'])
© www.soinside.com 2019 - 2024. All rights reserved.