使用Heroku和Rails 4.0.0设置Redis To Go

时间:2014-03-17 14:31:06

标签: ruby-on-rails heroku redistogo

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

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

通过dashboard.heroku网站,我使用Nano版本的Redis To Go的单击安装将插件安装到我的应用程序。

我将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而没有任何问题?

3 个答案:

答案 0 :(得分: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安装。

答案 1 :(得分:2)

更新Rails 4的brandonhilkert's answer

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

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

答案 2 :(得分:1)

对于Rails 4,我做了以下

在控制台中:

Procfile

worker: bundle exec sidekiq 我添加了:

gem 'redis'

在我的' gemfile.rb'我补充说:

config/initializers/redis.rb

我添加了以下文件uri = ENV["REDISTOGO_URL"] || "redis://localhost:6379/" REDIS = Redis.new(:url => uri)

app.controller('UploadController', ['$scope', 'Upload', '$timeout', function ($scope, Upload, $timeout) {
    $scope.$watch('files', function () {
        $scope.upload($scope.files);
    });
    $scope.upload = function (files) {
        if (files && files.length) {
            for (var i = 0; i < files.length; i++) {
                var file = files[i];
            }
        }
    };
}]);