Развертывание redis для heroku неспособно подключиться
ive пытался получить resque для работы с heroku. я могу успешно заставить его работать в режиме разработки, однако, когда я пытаюсь нажать на герою, я получаю
Errno::ECONNREFUSED (Connection refused - Unable to connect to Redis on 127.0.0.1:6379):
i затем читайте и следуйте http://blog.redistogo.com/2010/07/26/resque-with-redis-to-go/
i разместил конфигурации, перечисленные на сайте, но получив следующую ошибку
SocketError (getaddrinfo: nodename nor servname provided, or not known):
я вставляю свои инициализаторы /resque.rb
Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }
ENV["redis://redistogo:[email protected]:9254/"] ||= "redis://heroku_username:[email protected]:9254/"
uri = URI.parse(ENV["redis://redistogo:[email protected]:9254/"])
Resque.redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
однако он выдает указанную выше ошибку. в моем режиме dev теперь также получаю ошибку.
Я попытался использовать свое имя пользователя heroku (im используя add from from heroku), поместив мой пароль в герою и изменив порт на 9254. Однако я продолжаю получать сокетную ошибку сейчас. что я делаю неправильно?
помощь была бы высоко оценена. спасибо
UPDATE.
@kevin
Я попробовал
uri = URI.parse(ENV["my_url_string"] || "redis://localhost:9254/" )
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
в инициализаторе /redis.rb, но я получаю следующую ошибку:
Errno::ECONNREFUSED (Connection refused - Unable to connect to Redis on 127.0.0.1:6379):
- числа в ошибке, т.е. 127.0.0.1:6379 значимые? ive проверил мое приложение redis gui, а также конфигурацию heroku, что мой номер порта - 9254
REDISTOGO_URL => redis://redistogo:[email protected]:9254/
У вас были другие настройки конфигурации? спасибо за помощь!
ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ.
i зафиксировал его. я не могу в это поверить! мое полное решение
uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Resque.redis = REDIS
дословно. он работает без явной настройки URL-адреса, потому что я думаю, что герой пытается настроить его для меня уже
Ответы
Ответ 1
Для моей настройки у меня есть /config/initializers/redis.rb
с этими строками:
uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://localhost:6379/" )
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
My REDISTOGO_URL
определяется в моей конфигурации heroku. Вы должны подтвердить это, набрав:
heroku config --app my_app
Вы увидите на выходе значение для REDISTOGO_URL
Скопировать REDISTOGO_URL
прямо из Redis To Go. Вы найдете его, перейдя к экземпляру в героику и нажав Add Ons → Redis To Go.
Вот несколько указателей:
- Убедитесь, что у вас есть URL-адрес REDIS_TO_GO в вашей конфигурации heroku из командной строки, как показано выше.
- Убедитесь, что URL-адрес REDIS_TO_GO идентичен URL-адресу, присвоенному этому экземпляру в конфигурации Add Ons → Redis To Go.
Ответ 2
i зафиксировал его. я не могу в это поверить! мое полное решение
uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Resque.redis = REDIS
дословно. он работает без явной настройки URL-адреса, потому что я думаю, что герой пытается настроить его для меня уже
Ответ 3
Я получил то же самое, поэтому, в основном Sidekiq не хватал REDISCLOUD_URL от vars, он захватывал REDIS_PROVIDER.
heroku config:set REDIS_PROVIDER=REDISCLOUD_URL
Он работал как шарм.