AnyCable allows you to use any WebSocket server (written in any language) as a replacement for built-in Rails Action Cable server.
With AnyCable you can use channels, client-side JS, broadcasting - (almost) all that you can do with Action Cable.
You can even use Action Cable in development and not be afraid of compatibility issues.
AnyCable Pro has been launched 🚀
- Ruby >= 2.6
- Rails >= 6.0 (Rails 5.1 could work but we're no longer enforce compatibility on CI)
- Redis (see other options for broadcasting)
anycable-rails gem to your Gemfile:
gem "anycable-rails" # when using Redis broadcast adapter gem "redis", ">= 4.0"
Interactive set up
After the gem was installed, you can run an interactive wizard to configure your Rails application for using with AnyCable by running a generator:
bundle exec rails g anycable:setup
Manual set up
Specify AnyCable subscription adapter for Action Cable:
# config/cable.yml development: adapter: any_cable # or anycable production: adapter: any_cable
and specify AnyCable WebSocket server URL:
# For development it's likely the localhost # config/environments/development.rb config.action_cable.url = "ws://localhost:8080/cable" # For production it's likely to have a sub-domain and secure connection # config/environments/production.rb config.action_cable.url = "wss://ws.example.com/cable"
Then, run AnyCable RPC server:
$ bundle exec anycable # don't forget to provide Rails env $ RAILS_ENV=production bundle exec anycable
And, finally, run AnyCable WebSocket server, e.g. anycable-go:
anycable-go --host=localhost --port=8080
See documentation for more information on AnyCable + Rails usage.
Action Cable Compatibility
Bug reports and pull requests are welcome on GitHub at https://github.com/anycable/anycable-rails.
The gem is available as open source under the terms of the MIT License.
To report a security vulnerability, please contact us at
firstname.lastname@example.org. We will coordinate the fix and disclosure.