2014-03-17 4 views
4

Я пытаюсь настроить Redis To Go на моем Rails 4 приложении. Я хочу иметь возможность развернуть его и в Heroku.Настройка Redis To Go с Heroku и Rails 4.0.0

До сих пор, это то, что я сделал:

Через dashboard.heroku сайт, я использовал один клик установить для версии Nano от Redis To Go, чтобы установить аддон мое приложение.

Я добавил gem 'redis' в свой gemfile.

В config/environments/development.rb я добавил эту строку:

ENV["REDISTOGO_URL"] = 'redis://redistogo:[email protected]:10280/' 

Затем я создал config/initializers/redis.rb файл, который выглядит следующим образом:

uri = URI.parse(ENV["redis://redistogo:[email protected]: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 без каких-либо проблем?

ответ

6

ENV ["REDISTOGO_URL"] должен находиться в окружающей среде на Heroku. Я бы удалить его из конфигурации/сред/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 переменная не установлена ​​в развитии, он будет падать обратно на локальная установка redis.

2

brandonhilkert's answer Для обновления для Rails 4:

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

Кроме того, вы можете использовать Redis.current вместо установки REDIS переменной (see here).

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)