2016-05-15 2 views
0

Я следую за Ryan Bates учебником ActionController Live и развертыванием приложения в heroku. Все работает отлично, кроме событий, когда Райан грустно, что мы должны снова открыть связь redis, и я не могу это сделать. Я использую RedisToGo для выполнения redis on heroku. Вот мое события контроллер действие:Heroku Redis can not open connection

def events 
    response.headers["Content-Type"] = "text/event-stream" 
    redis = Redis.new(:url => uri) 
    redis.psubscribe('messages.*') do |on| 
     on.pmessage do |pattern, event, data| 
      response.stream.write("event: #{event}\n") 
      response.stream.write("data: #{data}\n\n") 
     end 
    end 
    rescue IOError 
     logger.info "Stream closed" 
    ensure 
     redis.quit 
     response.stream.close 
end 

Также здесь Redis инициализатор:

uri = URI.parse(ENV["REDISTOGO_URL"]) 
REDIS = Redis.new(:url => uri) 

Может кто-нибудь мне помочь?

EDIT

Я получил все, чтобы работать только инициализации клиента с использованием Redis.new(url: ENV["REDISTOGO_URL"]) вместо разбора URI в событиях действия контроллера.

ответ

0

заменить это:

redis = Redis.new(:url => uri) 
redis.psubscribe 

с этим:

REDIS.psubscribe 

везде, где есть 'Redis' выше, замените с Redis глобальной.

+0

это не решит проблему, событие не произошло, ошибка не была – jealrockone

+0

у вас есть, что REDIS = Redis.new в вашем config/initializers где-то, правильно? – court3nay

+0

нет, только этот REDIS = Redis.new (: url => uri) – jealrockone