#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»]