5

我正在尝试在我的 Rails 4 应用程序上设置 Redis To Go。我也希望能够将它部署到 Heroku。

到目前为止,这就是我所做的:

通过该dashboard.heroku站点,我使用一键安装 Redis To Go 的 Nano 版本将插件安装到我的应用程序中。

我添加gem 'redis'到我的 gemfile 中。

config/environments/development.rb我添加了这一行:

ENV["REDISTOGO_URL"] = 'redis://redistogo:b9fc604b1c86a1f6c232ce1dd16cd989@albacore.redistogo.com:10280/'

然后,我创建了一个config/initializers/redis.rb如下所示的文件:

uri = URI.parse(ENV["redis://redistogo:b9fc604b1c86a1f6d872ce1dd16cd989@albacore.redistogo.com:10280/"] || "redis://localhost:6379/")
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)

现在在我的控制台中运行Redis命令时,我收到此错误:

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

我在这里做错了什么,我需要做些什么来确保我可以在开发中测试并部署到 Heroku 没有任何问题?

4

3 回答 3

6

ENV["REDISTOGO_URL"] 应该在 Heroku 的环境中。我会将它从 config/environments/development.rb 中完全删除,并将 redis.rb 初始化程序更改为:

uri = URI.parse(ENV.fetch("REDISTOGO_URL", "redis://localhost:6379/"))
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)

只要未在开发中设置 ENV var,它就会回退到本地 redis 安装。

于 2014-03-17T15:09:15.293 回答
2

要更新Brandonhilkert对 Rails 4 的回答:

uri = ENV["REDISTOGO_URL"] || "redis://localhost:6379/"
REDIS = Redis.new(:url => uri)

此外,您可能希望使用Redis.current而不是设置REDIS变量(请参见此处)。

于 2015-01-03T18:44:23.877 回答
1

对于 Rails 4,我做了以下

在控制台中:

heroku addons:create redistogo
heroku config:set REDIS_PROVIDER=REDISTOGO_URL

在我的Procfile我补充说:

worker: bundle exec sidekiq

在我的“gemfile.rb”中,我添加了:

gem 'redis'

我添加了以下文件config/initializers/redis.rb

uri = ENV["REDISTOGO_URL"] || "redis://localhost:6379/"
REDIS = Redis.new(:url => uri)
于 2015-07-03T21:47:14.463 回答