Heroku подключается к Redis localhost при вызове Resque.enqueue в приложении Rails 4 - PullRequest
0 голосов
/ 15 марта 2019

В Heroku при запуске команды Resque.enqueue Heroku пытается подключиться к redis через localhost.В config / initializers / redis.rb правильный URL-адрес задается с помощью $ redis = Redis.new (url: ENV ['REDIS_URL']), а экземпляр $ redis создается без ошибок.В контроллере, где вызывается метод enqueue, $ redis.inspect возвращает правильное значение.

Получена ошибка: Redis :: CannotConnectError (Ошибка подключения к Redis на локальном хосте: 6379 (Errno :: ECONNREFUSED)):

gemfile

gem 'rails', '4.2.6' 
gem 'redis', "~> 4.1.0"
gem 'resque', "~> 1.27.3"

config / initializers / redis.rb

if Rails.env.production?
  $redis = Redis.new(url: ENV['REDIS_URL'])
  puts "$redis.inspect => #{$redis.inspect} "
end

lib / tasks / 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

1 Ответ

0 голосов
/ 15 марта 2019

Проблема устранена, и Redis указывает на правильный сервер в Heroku.

В конфиге / инициализаторах / redis.rb

Изменено это:

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

К этому:

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