I use:
rails (5.0.2)
actioncable (5.0.2)
puma (3.8.2)
I have a Rails 5 Action Cable demo chat and a year ago it didn't work without Redis - and now it does! (after bundle update
).
In other words, I succedeed to make my demo chat to work in development mode without Redis. I set the config/cable.yml
like this:
development:
adapter: async
test:
adapter: async
production:
adapter: async
and start rails c
. That's it - the chat is working, no problem. So Redis is obviously not needed anymore - unlike a year-ago times?
Also I found a way to make my demo chat to work with Redis. To do so I change the config/cable.yml
like this:
redis: &redis
adapter: redis
url: redis://localhost:6379/1
production: *redis
development: *redis
test: *redis
than add gem 'redis', '~>3.2'
to my Gemfile (+ bundle install
), start Redis redis-server
and then rails c
.
So my questions are:
- Does Action Cable 5 require Redis to work? (looks like don't but I'm not sure).
- If (apparently) Action Cable 5 can work with or without Redis - what's the difference?
- What is
gem 'redis', '~>3.2'
? What is it for?
Generally I have no idea what is now the proper usage of Action Cable 5 in terms of Redis usage (non-usage?). Is there any difference for the development or production mode?
No. According to the documentation, it's able to use other adapters.
Questions:
No.
In case of ActionCable there in no differences, it uses an abstraction
adapter
and does not depend on transport protocol.It's for redis and provides an interface for communication with redis-server.
You can use the async adapter in dev, but the docs state that
http://edgeguides.rubyonrails.org/action_cable_overview.html#configuration
I tried it anyway - and at least with my setup (nginx, passenger) - the async adapter just didn't work. I'm guessing thread/process issues
For production, that leaves you the option of Redis or PostgreSql