Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Want to use Redis on Heroku (Redis::CannotConnectError ( Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)) )

I want to use Redis on Heroku but I got this error Redis::CannotConnectError (Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)) .

I checked these , but didn't get helped. Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED, deploying redis to heroku unable to connect, How to get Redis to start on Heroku? .

I use Ruby 2.0.0p247 and Rails4. I'm using puma.

I use RedisToGo(nano) and, in /config/initializers/redis.rb I write this.

uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://localhost:6379/" )
$redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)

I checked "REDISTOGO_URL" is the same URL that I can see when $ heroku config .

I did Redis restart on Heroku GUI, but it doesn't work.

Please tell me anything I need to do. Thank you for your help.

like image 566
Yuki Ishikawa Avatar asked Oct 07 '13 19:10

Yuki Ishikawa


2 Answers

Check which ENV variable should contain redis configuration

For example if you are going to use Redis for Sidekiq you need to map ENV["REDISTOGO_URL"] to ENV["REDIS_PROVIDER"] because Sidekiq is expecting to get redis configuration from ENV["REDIS_PROVIDER"]

You can do it this way

heroku config:set REDIS_PROVIDER=REDISTOGO_URL

Also you don't need to URI.parse, Redis will do it instead of you in case it is needed.

$redis = Redis.new(url: ENV['REDISTOGO_URL' || "redis://localhost:6379/"])

I suggest to use the gem figaro to set ENV variables for your local development. Thus you remove OR statement

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

and set alternative value in your config/application.yml

REDISTOGO_URL: redis://127.0.0.1:6379 
like image 119
Sergiy Seletskyy Avatar answered Sep 29 '22 06:09

Sergiy Seletskyy


You're trying to connect to your own computer (note 127.0.0.1 == localhost). I'm guessing that's not the Redis server you're looking for :)

Looks like ENV["REDISTOGO_URL"] isn't properly set.


Also, just a side note, look up Redis To Go if you haven't already, which is what most people use as a Redis server in conjunction with Heroku.

like image 45
varatis Avatar answered Sep 29 '22 07:09

varatis