TODO: And describe your gem
Add this line to your application's Gemfile:
gem 'reactivity'
And then execute:
$ bundle
Or install it yourself as:
$ gem install reactivity
Initializer
# config/initializers/reactivity.rb
Reactivity.logger = Rails.logger
Reactivity.stream_exceptions = true
Enabling the channel
# app/channels/reactivity_channel.rb
class ReactivityChannel < ApplicationCable::Channel
include Reactivity::Channel
end
Linking models
# app/models/example.rb
class Example < ApplicationRecord
include Reactivity::Hooks
end
Client side
// TODO: api still being worked on.
// Not quite certain of the balance between simplicity and flexibility
// Right now feel the focus should be functionnality and we can just do a small breaking change at some point
// For now, it looks like that:
reactivity = new Reactivity( function () {
// Registration
collection = reactivity.getCollection('example');
// Callback
changeHandle = collection.onChange( function (data) {
console.log("Change callback called");
});
// Subscription
subscriptionHandle = collection.subscribe({ pos_x: { lt: 25 }});
// Callback Stop
setTimeout( function () {
changeHandle.stop();
}, 5000);
// Subscription Stop
setTimeout( function () {
subscriptionHandle.stop();
}, 10000);
});
Cable.yml
Would need some investigation but it seems to be an incompatibility with the async
adapter integration.
The redis
one works as expected.
See ROADMAP.md
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/tjoyal/reactivity.
Contribution can also be achieved by sharing your use cases so the the project evolve in the right direction.
The gem is available as open source under the terms of the MIT License.