ruby-on-rails - heroku español
Desplegando redis a heroku no se puede conectar (3)
He estado tratando de volver a trabajar para trabajar con Heroku. Puedo lograr que funcione correctamente en modo de desarrollo, sin embargo, cuando intento empujar a Heroku, obtengo
Errno::ECONNREFUSED (Connection refused - Unable to connect to Redis on 127.0.0.1:6379):
Luego leí y seguí http://blog.redistogo.com/2010/07/26/resque-with-redis-to-go/
Puse las configuraciones enumeradas en el sitio pero obtuve el siguiente error
SocketError (getaddrinfo: nodename nor servname provided, or not known):
Pongo en mis inicializadores / resque.rb
Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }
ENV["redis://redistogo:[email protected]:9254/"] ||= "redis://heroku_username:heroku_password@host:9254/"
uri = URI.parse(ENV["redis://redistogo:[email protected]:9254/"])
Resque.redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Sin embargo arroja el error mencionado anteriormente. en mi modo dev ahora, me sale el error también.
Intenté usar mi nombre de usuario de Heroku (estoy usando el complemento de Heroku), poner mi contraseña en Heroku y cambiar el puerto a 9254. Sin embargo, sigo recibiendo el error de socket ahora. ¿Qué estoy haciendo mal?
La ayuda sería muy apreciada. gracias
ACTUALIZAR.
@kevin
Lo intenté
uri = URI.parse(ENV["my_url_string"] || "redis://localhost:9254/" )
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
en un inicializador / redis.rb también pero obtengo el siguiente error
Errno::ECONNREFUSED (Connection refused - Unable to connect to Redis on 127.0.0.1:6379):
¿Son significativos los números en el error, es decir, 127.0.0.1:6379? Revisé mi aplicación redis gui y también de heroku config que mi número de puerto es 9254
REDISTOGO_URL => redis://redistogo:[email protected]:9254/
¿Tenías otros ajustes de configuración? ¡gracias por ayudar!
ACTUALIZACIÓN FINAL.
Lo arreglé. ¡No puedo creerlo! mi solución completa es
uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Resque.redis = REDIS
literal. funciona sin establecer explícitamente la url porque supongo que Heroku intenta configurarlo para mí ya
Lo arreglé. ¡No puedo creerlo! mi solución completa es
uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Resque.redis = REDIS
literal. funciona sin establecer explícitamente la url porque supongo que Heroku intenta configurarlo para mí ya
Obtuve lo mismo, así que, básicamente, Sidekiq no estaba tomando REDISCLOUD_URL de las variables, sino que estaba tomando REDIS_PROVIDER.
heroku config:set REDIS_PROVIDER=REDISCLOUD_URL
Funcionó a las mil maravillas.
Para mi configuración tengo /config/initializers/redis.rb
con estas líneas:
uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://localhost:6379/" )
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Mi REDISTOGO_URL
se define en mi configuración de heroku. Deberías poder validar eso escribiendo:
heroku config --app my_app
Verás en la salida el valor para REDISTOGO_URL
Debes copiar tu REDISTOGO_URL
directamente desde Redis To Go. Para encontrarlo, vaya a la instancia en heroku y haga clic en Agregar en - - Redis To Go.
Aquí hay un par de punteros:
- Verifique que tenga su URL de REDIS_TO_GO en su configuración de heroku desde la línea de comandos como lo he demostrado anteriormente.
- Verifique que la URL de REDIS_TO_GO sea idéntica a la asignada a esa instancia en la configuración de complementos -> Redis To Go.