2011-10-12 45 views
17

我在Heroku上添加了Redistogo nano插件,我已经在控制台中成功测试了它。然而,当我的应用程序尝试与Redis的我碰到下面的错误连接:如何让Redis在Heroku上启动?

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' 

为什么试图访问localhost上的Redis?

我的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) 
+0

我猜ENV [“REDISTOGO_URL”]是localhost?尝试在生产中使用您的heroku域名网址。 –

+1

当你添加插件作为redis去实例URL时,Heroku为你设置了REDISTOGO_URL –

+2

如果它设置了URL,为什么它会尝试本地主机? – Simpleton

回答

21

您是否在使用Resque?如果是这样,你需要告诉Resque使用哪个Redis。

Resque.redis = REDIS 

如果没有,那么您发布的代码不会设置您的REDIS连接。

+1

顺便说一下,你可以在问题中显示的初始化文件的末尾添加这一行,或者你可以在初始化程序中用''''Resque.redis'''替换''REDIS'''变量上班。 – fholgado

+1

巨型竖起大拇指。这是我的问题的解决方案。它的奇怪,因为我使用ENV [“REDISTOGO_URL”]而不是ENV [“my_actual_url_from_heroku”],它在heroku中工作 – Sasha

6

试试这个:

heroku config --long | grep REDIS 

看到你REDISTOGO_URL是什么。你可能会意外地设置它。

+2

尝试让Redis gem处理您的URL:'Redis.connect(:url => ENV ['REDISTOGO_URL']) ' – Jonathan

+0

谢谢。你的代码给了我灵感......没有明确地写一些东西在ENV [“REDISTOGO_URL”] – Sasha