【问题标题】:How to get Redis to start on Heroku?如何让 Redis 在 Heroku 上启动?
【发布时间】:2011-12-05 22:28:02
【问题描述】:

我已经在 Heroku 上添加了 Redistogo nano 插件,并且我已经在控制台中成功地对其进行了测试。但是,当我的应用尝试与 Redis 连接时,出现以下错误:

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'

为什么要在本地访问 Redis?

我的 config/initializers 文件夹中的 Redis.rb 有这个,这几乎肯定是问题所在。

#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)

【问题讨论】:

  • 我猜 ENV["REDISTOGO_URL"] 是本地主机?尝试在生产中使用你的 heroku 域 url 作为这个变量。
  • Heroku 为您设置 REDISTOGO_URL 当您将插件添加为 redis to go 实例 URL 时
  • 如果设置了 URL,为什么会尝试 localhost?

标签: ruby-on-rails heroku redis


【解决方案1】:

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

Resque.redis = REDIS

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

【讨论】:

  • 顺便说一句,您可以在问题中显示的初始化程序文件的末尾添加这一行,或者您可以在初始化程序中将 REDIS 变量替换为 Resque.redis 以使事情正常工作。
  • 超级赞。这是我的问题的解决方案。这很奇怪,因为我使用 ENV["REDISTOGO_URL"] 而不是 ENV["my_actual_url_from_heroku"] 并且它在 heroku 中工作
【解决方案2】:

试试这个:

heroku config --long | grep REDIS

查看您的 REDISTOGO_URL 是什么。您可能不小心设置了它。

【讨论】:

  • 尝试让 Redis gem 处理你的 URL:Redis.connect(:url => ENV['REDISTOGO_URL'])
  • 谢谢。你的台词给了我灵感……不要在 ENV["REDISTOGO_URL"] 中明确写一些东西
猜你喜欢
  • 2018-04-07
  • 2014-05-07
  • 2021-07-22
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 2013-12-13
  • 2023-03-28
  • 2021-07-02
相关资源
最近更新 更多