Project

notifi

0.0
No commit activity in last 3 years
No release in over 3 years
Simple frame for creating subsciption and notificaton records
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 3.1.0
 Project Readme

Code Climate

Notifi

TODO: Write a gem description

Installation

Add this line to your application's Gemfile:

gem 'notifi'

And then execute:

$ bundle

Or install it yourself as:

$ gem install notifi

Usage

Basic subscription & notification

Setup subscribers and subscribable models:

class User
    include Mongoid::Document

    # Include notifi base
    include Notifi

    # setup user as a subscriber
    acts_as_subscriber
end

class Post
    include Mongoid::Document

    # Include notifi base
    include Notifi

    # setup posts as subscribable
    acts_as_subscribable
end
~~~~

You now have the ability to subscribe users to posts and notify users through the subscriptions.
~~~~ Ruby
post = Post.create
user = User.create

user.subscribe_to post

user.notifications.count # => 0

post.notify

user.notifications.count # => 1
~~~~

### On notification events

~~~ Ruby
class User
  include Mongoid::Document
  include Notifi

  acts_as_subscriber

  on_notification do |notification|
    # Do some sweet notification stuff here. Like maybe queue up an email
    # or print a smiley face to the log.
  end
end
~~~

The block provided to on_notification in your subscriber class will be called after a notification for the subscriber is created.


### Custom notification classes.

You can customize notifications by extending the Notification class and configuring the subscribable to use the custom class for notifications.

~~~ Ruby
class CommentNotification < Notifi::Notification
  field :message, type: String
end

class Post
  include Mongoid::Document
  include Notifi

  acts_as_subscribable default: CommentNotification
end

post = Post.create
user.subscribe_to post
post.notify(set:{message: 'Someone commented on your post!'})

user.notifications.first.message # => 'Someone commented on your post!'
~~~

### Notifying specific events

~~~ Ruby

  # ...

  acts_as_subscribable default: CommentNotification, test: TestNotification

  # ...

  thing.notifiy(:test)
~~~

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request