## Rails 5.0.2 (March 01, 2017) ## * No changes. ## Rails 5.0.1 (December 21, 2016) ## * No changes. ## Rails 5.0.1.rc2 (December 10, 2016) ## * No changes. ## Rails 5.0.1.rc1 (December 01, 2016) ## * Permit same-origin connections by default. New option `config.action_cable.allow_same_origin_as_host = false` to disable. *Dávid Halász*, *Matthew Draper* * Fixed and added a workaround to avoid race condition, when one thread closed the IO, when an another thread was still trying read from IO on a connection. *Matthew Draper* * Shutdown pubsub connection before classes are reloaded, to avoid hangups caused by pubsub still holding reference to Active Record connection from the pool, and Active Record trying to cleanup the pool. *Jon Moss* * Prevent race where the client could receive and act upon a subscription confirmation before the channel's `subscribed` method completed. Fixes #25381. *Vladimir Dementyev* * Buffer writes to websocket connections, to avoid blocking threads that could be doing more useful things. *Matthew Draper*, *Tinco Andringa* * Invocation of channel action is now prevented, if subscription connection was rejected. Fixes #23757. *Jon Moss* * Protect against concurrent writes to a websocket connection from multiple threads; the underlying OS write is not always threadsafe. *Tinco Andringa* * Close hijacked socket when connection is shut down. Fixes #25613. *Tinco Andringa* ## Rails 5.0.0 (June 30, 2016) ## * Fix development reloading support: new cable connections are now correctly dispatched to the reloaded channel class, instead of using a cached reference to the originally-loaded version. *Matthew Draper* * WebSocket protocol negotiation. Introduces an Action Cable protocol version that moves independently of and, hopefully, more slowly than Action Cable itself. Client sockets negotiate a protocol with the Cable server using WebSockets' native subprotocol support: * https://tools.ietf.org/html/rfc6455#section-1.9 * https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#Subprotocols If they can't negotiate a compatible protocol (usually due to upgrading the Cable server with a browser still running old JavaScript) then the client knows to disconnect, cease retrying, and tell the app that it hit a protocol mismatch. This allows us to evolve the Action Cable message format, handshaking, pings, acknowledgements, and more without breaking older clients' expectations of server behavior. *Daniel Rhodes* * Pubsub: automatic stream decoding. stream_for @room, coder: ActiveSupport::JSON do |message| # `message` is a Ruby hash here instead of a JSON string The `coder` must respond to `#decode`. Defaults to `coder: nil` which skips decoding entirely. *Jeremy Daer* * Add ActiveSupport::Notifications to ActionCable::Channel. *Matthew Wear* * Safely support autoloading and class unloading, by preventing concurrent loads, and disconnecting all cables during reload. *Matthew Draper* * Ensure ActionCable behaves correctly for non-string queue names. *Jay Hayes* * Added `em_redis_connector` and `redis_connector` to `ActionCable::SubscriptionAdapter::EventedRedis` and added `redis_connector` to `ActionCable::SubscriptionAdapter::Redis`, so you can overwrite with your own initializers. This is used when you want to use different-than-standard Redis adapters, like for Makara distributed Redis. *DHH* * Support PostgreSQL pubsub adapter. *Jon Moss* * Remove EventMachine dependency. *Matthew Draper* * Remove Celluloid dependency. *Mike Perham* * Create notion of an `ActionCable::SubscriptionAdapter`. Separate out Redis functionality into `ActionCable::SubscriptionAdapter::Redis`, and add a PostgreSQL adapter as well. Configuration file for ActionCable was changed from`config/redis/cable.yml` to `config/cable.yml`. *Jon Moss* * Added to Rails! *DHH*