Welcome to CableReady 👋

CableReady helps you create great real-time user experiences by making it simple to trigger client-side DOM changes from server-side Ruby. It establishes a standard for interacting with the client via ActionCable web sockets. No need for custom JavaScript.

Please read the official [ActionCable docs](http://guides.rubyonrails.org/action_cable_overview.html)
to learn more about ActionCable before proceeding.

## 📚 Docs

- [Official Documentation](https://cableready.stimulusreflex.com)
- [Documentation Source Code](https://github.com/stimulusreflex/cable_ready/tree/main/docs)

## 💙 Community

- [Discord](https://discord.gg/stimulus-reflex) - primary support channel

## 🚀 Install

### Rubygem

```sh
bundle add cable_ready
```

### JavaScript

There are a few ways to install the CableReady JavaScript client, depending on your application setup.

#### ESBuild / Webpacker

```sh
yarn add cable_ready
```

#### Import maps:

```ruby
# config/importmap.rb

# ...

pin 'cable_ready', to: 'cable_ready.js', preload: true
```

#### Rails Asset pipeline (Sprockets):

```html+erb
<!-- app/views/layouts/application.html.erb -->

<%= javascript_include_tag "cable_ready.umd.js", "data-turbo-track": "reload" %>
```

Checkout the [documentation](https://cableready.stimulusreflex.com) to continue!

## 🙏 Contributing

### Code of Conduct

Everyone interacting with CableReady is expected to follow the [Code of Conduct](CODE_OF_CONDUCT.md)

### Coding Standards

This project uses [Standard](https://github.com/testdouble/standard)
and [prettier-standard](https://github.com/sheerun/prettier-standard) to minimize bike shedding related to code formatting.

Please run `./bin/standardize` prior submitting pull requests.

### 📦 Releasing

1. Make sure that you run `yarn` and `bundle` to pick up the latest.
1. Bump version number at `lib/cable_ready/version.rb`. Pre-release versions use `.preN`
1. Run `rake build` and `yarn build`
1. Commit and push changes to GitHub
1. Run `rake release`
1. Run `yarn publish --no-git-tag-version`
1. Yarn will prompt you for the new version. Pre-release versions use `-preN`
1. Commit and push changes to GitHub
1. Create a new release on GitHub ([here](https://github.com/stimulusreflex/cable_ready/releases)) and generate the changelog for the stable release for it

## 📝 License

CableReady is released under the [MIT License](LICENSE.txt).
