Anycable Rails
AnyCable allows you to use any WebSocket server (written in any language) as a replacement for built-in Rails ActionCable server.
With AnyCable you can use channels, client-side JS, broadcasting - (almost) all that you can do with ActionCable.
You can even use ActionCable in development and not be afraid of compatibility issues.
For usage outside Rails see AnyCable repository.
Requirements
- Ruby ~> 2.3;
- Rails ~> 5.0;
- Redis
How It Works?

Links
Compatible WebSocket servers
Installation
Add Anycable to your application's Gemfile:
gem 'anycable-rails'
# or if you want to use built-in Action Cable server
# for test and development (which is possible and recommended)
gem 'anycable-rails', group: :production
And then run:
rails generate anycable
to create executable.
Configuration
Add config/anycable.ymlif you want to override defaults (see below):
production:
# gRPC server host
rpc_host: "localhost:50051"
# Redis URL (for broadcasting)
redis_url: "redis://localhost:6379/2"
# Redis channel name
redis_channel: "anycable"
Anycable uses anyway_config, thus it is also possible to set configuration variables through secrets.yml or environment vars.
Usage
Run Anycable RPC server:
./bin/anycable
and also run AnyCable-compatible WebSocket server, e.g. anycable-go:
anycable-go -addr='localhost:3334'
Don't forget to set cable url in your config/environments/production.rb:
config.action_cable.url = "ws://localhost:3334/cable"
ActionCable Compatibility
This is the compatibility list for the AnyCable gem, not for AnyCable servers (which may not support some of the features yet).
| Feature | Status |
|---|---|
| Connection Identifiers | + |
| Connection Request (cookies, params) | + |
| Disconnect Handling | + |
| Subscribe to channels | + |
| Parameterized subscriptions | + |
| Unsubscribe from channels | + |
| Subscription Instance Variables | - |
| Performing Channel Actions | + |
| Streaming | + |
| Custom stream callbacks | - |
| Broadcasting | + |
| Periodical Timers | - |
| Disconnect remote clients | - |
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.