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.
AnyCable Pro has been launched 🚀
- Ruby >= 3.1
- Rails >= 6.0*
* Recent anycable-rails
versions only work with Rails 8+; older versions compatible with Rails 6 and Rails 7 still receive fixes and minor updates (patch releases).
Add anycable-rails
gem to your Gemfile:
gem "anycable-rails"
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
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.
See documentation.
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 anycable@evilmartians.com
. We will coordinate the fix and disclosure.