AnyCable Rails
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.
💾 Example Application
📑 Documentation.
AnyCable Pro has been launched 🚀
Requirements
- 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)
Usage
Add 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
See documentation.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/anycable/anycable-rails.
License
The gem is available as open source under the terms of the MIT License.
Security Contact
To report a security vulnerability, please contact us at anycable@evilmartians.com
. We will coordinate the fix and disclosure.