0

I following Ryan Bates tutorial ActionController Live, and deploying app at heroku. All works fine, except events, where Ryan sad that we should reopen the redis connection, and I cant do it. I using RedisToGo to perform redis on heroku. Here my events controller action:

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

Also here redis initializer:

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

Can someone help me?

EDIT

I got all to work just initializing the client using Redis.new(url: ENV["REDISTOGO_URL"]) instead of parsing the URI in events controller action.

jealrockone
  • 97
  • 1
  • 9

1 Answers1

0

replace this:

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

with this:

REDIS.psubscribe

anywhere you have 'redis' above, replace with the REDIS global.

court3nay
  • 2,215
  • 1
  • 10
  • 15