rails/actioncable
Xavier Noria b05603f6e4 Let Action Cable's autoloader ignore the version file
Rails components version files are organized in a particular way.

On one hand, ActionCable::VERSION is defined in action_cable/gem_version.rb, but
that file does not follow Zeitwerk conventions, so we ignore it.

Addtionally, action_cable/gem_version.rb defines ActionCable.gem_version, and we
need to eager load it to have that method available for client code.

On the other hand, there is also action_cable/version.rb, which loads
action_cable/gem_version.rb. That file follows the conventions because by
loading it, the expected constant gets defined as a side-effect, but it does so
in an unusual indirect way.

All in all, the setup that we had technically works, but setting an autoload for
VERSION in ActionCable makes you think too much about the interactions between
these two files and the autoloads triggered by the existing require_relative,
which eager loads anyway.

I believe this simplification is easier to understand.
2024-04-22 19:58:23 +02:00
..
app Record ping on every actioncable message 2024-04-05 15:23:52 +00:00
bin Use frozen string literal in actioncable/ 2017-07-23 23:30:29 +03:00
lib Let Action Cable's autoloader ignore the version file 2024-04-22 19:58:23 +02:00
test Deprecate ConnectionPool#connection 2024-03-01 14:32:55 +01:00
.babelrc Convert ActionCable javascript to ES2015 modules with modern build environment 2018-11-02 08:41:05 -07:00
.eslintrc Output Action Cable JS without transpiling and as ESM (#42856) 2021-08-06 14:00:43 +02:00
.gitignore Ensure @rails/actioncable package contains complete source 2019-08-15 09:19:59 -04:00
actioncable.gemspec Bump the required Ruby version to 3.1.0 2023-12-31 08:54:03 +01:00
CHANGELOG.md Minor tweaks / improvements to recent changelog/api docs [ci skip] 2024-04-08 14:48:44 -03:00
karma.conf.js Output Action Cable JS without transpiling and as ESM (#42856) 2021-08-06 14:00:43 +02:00
MIT-LICENSE Remove Copyright years (#47467) 2023-02-23 11:38:16 +01:00
package.json test: update karma npm from 3.1.4 to 6.4.2 2024-04-18 17:48:59 +00:00
Rakefile Load framework test files in deterministic order 2019-12-16 16:55:06 +00:00
README.md 🔗 Remove RDoc auto-link from Rails module everywhere 2023-06-23 10:49:30 +09:00
rollup.config.js remove unknown rollup input option breakOnWarning 2024-02-10 14:05:39 +01:00
rollup.config.test.js Output Action Cable JS without transpiling and as ESM (#42856) 2021-08-06 14:00:43 +02:00

Action Cable Integrated WebSockets for \Rails

Action Cable seamlessly integrates WebSockets with the rest of your \Rails application. It allows for real-time features to be written in Ruby in the same style and form as the rest of your \Rails application, while still being performant and scalable. It's a full-stack offering that provides both a client-side JavaScript framework and a server-side Ruby framework. You have access to your full domain model written with Active Record or your ORM of choice.

You can read more about Action Cable in the Action Cable Overview guide.

Support

API documentation is at:

Bug reports for the Ruby on \Rails project can be filed here:

Feature requests should be discussed on the rails-core mailing list here: