A flexible notification library supporting the delivery to external services, rendering in various environments, and user configuration by category.
notifications-rails has been built with modularity in mind. It currently consists of four components each of which bringing one essential functionality to the integration of notifications in your Rails app.
notification-handler: Create and modify your notifications through a simple API.
notification-renderer: Render your notifications in various contexts.
notification-pusher: Deliver your notifications to various services, including Email and OneSignal.
notification-settings: Integrates with your authentication solution to craft a personalized user notification platform.
You may just use the components you actually need, or instead use this gem to bundle everything for a complete notification solution.
You can add notifications-rails to your Gemfile
with:
gem 'notifications-rails'
And then run:
$ bundle install
Or install it yourself as:
$ gem install notifications-rails
If you always want to be up to date fetch the latest from GitHub in your Gemfile
:
gem 'notifications-rails', github: 'jonhue/notifications-rails'
Details on usage are provided in the documentation of the specific modules.
To start development you first have to fork this repository and locally clone your fork.
Install the projects dependencies by running:
$ bundle install
Tests are written with RSpec. Integration tests are located in /spec
, unit tests can be found in <module>/spec
.
To run all tests:
$ ./rspec
To run RuboCop:
$ bundle exec rubocop
You can find all commands run by the CI workflow in .github/workflows/ci.yml
.
We warmly welcome everyone who is intersted in contributing. Please reference our contributing guidelines and our Code of Conduct.
Here you can find details on all past releases. Unreleased breaking changes that are on the current master can be found here.
notifications-rails follows Semantic Versioning 2.0 as defined at http://semver.org. Reference our security policy.
- Review breaking changes and deprecations in
CHANGELOG.md
. - Change the gem version in
VERSION
. - Reset
CHANGELOG.md
. - Create a pull request to merge the changes into
master
. - After the pull request was merged, create a new release listing the breaking changes and commits on
master
since the last release. - The release workflow will publish the gems to RubyGems.