Как запустить Redis на Heroku?

#ruby-on-rails #heroku #redis

#ruby-on-rails #heroku #redis

Вопрос:

Я добавил Redistogo надстройку nano в Heroku и успешно протестировал ее в консоли. Однако, когда мое приложение пытается подключиться к Redis, я получаю следующую ошибку:

Файл журнала Heroku:

 2011-10-12T08:19:50 00:00 app[web.1]: Errno::ECONNREFUSED (Connection refused - Unable to connect to Redis on 127.0.0.1:6379):
2011-10-12T08:19:50 00:00 app[web.1]:   app/controllers/sessions_controller.rb:14:in `create'
  

Почему он пытается получить доступ к Redis на localhost?

У моего Redis.rb в папке config / initializers есть это, что почти наверняка является проблемой.

 #What's pasted below is pasted ad verbatim. I don't know what to change the values to.

uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
  

Комментарии:

1. Я думаю, ENV[«REDISTOGO_URL»] — это localhost? Попробуйте использовать URL-адрес домена heroku для этой переменной в рабочей среде.

2. Heroku устанавливает REDISTOGO_URL для вас, когда вы добавляете аддон в качестве URL-адреса экземпляра redis to go

3. Если он установил URL, зачем ему пытаться использовать localhost?

Ответ №1:

Вы используете Resque? Если это так, вам нужно будет указать Resque, какой Redis использовать.

 Resque.redis = REDIS
  

Если нет, то код, о котором вы опубликовали, НЕ настраивает ваше соединение с REDIS.

Комментарии:

1. Кстати, вы можете добавить эту строку либо в конец файла инициализатора, показанного в вопросе, либо вы можете просто заменить REDIS переменную на Resque.redis в инициализаторе, чтобы все заработало.

2. мега большие пальцы вверх. это было решением моей проблемы. это странно, потому что я использовал ENV[«REDISTOGO_URL»], а не ENV[«my_actual_url_from_heroku»], и это работало в heroku

Ответ №2:

Попробуйте это:

 heroku config --long | grep REDIS
  

чтобы узнать, что такое ваш REDISTOGO_URL. Возможно, вы установили его случайно.

Комментарии:

1. Попробуйте разрешить Redis gem обрабатывать ваш URL: Redis.connect(:url => ENV['REDISTOGO_URL'])

2. Спасибо. ваша строка вдохновила меня на то, чтобы … явно не писать что-то в ENV[«REDISTOGO_URL»]