Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

πŸ›Ž Notifications Center engine like GitHub or other application for any Rails applications.

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
MIT-LICENSE
Notifications You must be signed in to change notification settings

rails-engine/notifications

Repository files navigation

Notifications

Mountable notifications for any Rails applications.

Gem Version Build Status codecov.io

Example:

2016εΉ΄03月29ζ—₯ 10 48 16

Installation

$ bundle add notifications

You now have a notifications generator in your Rails application:

$ rails g notifications:install

You can generate views, controllers if you need to customize them:

$ rails g notifications:views
$ rails g notifications:controllers

Usage

Create a Notification

class User
 def follow(user)
 Notification.create(notify_type: 'follow', actor: self, user: user)
 end
end
class Comment
 belongs_to :post
  belongs_to :user
 after_commit :create_notifications, on: [:create]
 def create_notifications
 Notification.create(
 notify_type: 'comment',
 actor: self.user,
 user: self.post.user,
 target: self)
 end
end

Get unread notifications count for a user:

# unread count
unread_count = Notification.unread_count(current_user)
# read count
read_count = Notification.read_count(current_user)
# for non-user class
Notifications.config.user_class = 'Member'
#or change
Notifications.configure do
 # Class name of you User model, default: 'User'
 self.user_class = 'User'
 # Method of user name in User model, default: 'name'
 # self.user_name_method = 'name'
 # Method of user avatar in User model, default: nil
 # self.user_avatar_url_method = nil
 # Method name of user profile page path, in User model, default: nil
 # self.user_profile_url_method = 'profile_url'
 # authenticate_user method in your Controller, default: nil
 # If you use Devise, authenticate_user! is correct
 # self.authenticate_user_method = 'authenticate_user!'
 # current_user method name in your Controller, default: 'current_user'
 # If you use Devise, current_user is correct
 # self.current_user_method = 'current_user'
end

Write your custom Notification partial view for notify_types:

If you create a notify_type, you need to add a partial view in app/views/notifications/ path, for example:

# There have two notify_type
Notification.create(notify_type: 'follow' ....)
Notification.create(notify_type: 'mention', target: @reply, second_target: @topic, ....)

Your app must have:

  • app/views/notifications/_follow.html.erb
  • app/views/notifications/_mention.html.erb
# app/views/notifications/_follow.html.erb
<div class="media-heading">
 <%= link_to notification.actor.title, main_app.user_path(notification.actor) %> just followed you.
</div>
# app/views/notifications/_mention.html.erb
<div class="media-heading">
 <%= link_to notification.actor.title, main_app.user_path(notification.actor) %> has mentioned you in
 <%= link_to notification.second_target.title, main_app.topic_path(notification.second_target) %>
</div>
<div class="media-content">
 <%= notification.target.body %>
</div>

NOTE: When you want use Rails route path name in notification views, you must use main_app prefix. etc: main_app.user_path(user)

About Notification template N+1 performance

It is recommended that you use second_level_cache for solving N+1 performance issues.

Contributing

Testing for multiple Rails versions:

make test_51
# or test all
make test

Site Used

License

The gem is available as open source under the terms of the MIT License.

About

πŸ›Ž Notifications Center engine like GitHub or other application for any Rails applications.

Topics

Resources

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
MIT-LICENSE

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /