2011-10-12 105 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

相關問題