Notifications Center engine like GitHub or other application for any Rails applications.
Clone or download
Latest commit b695c11 Nov 16, 2018


Mountable notifications for any Rails applications.

Gem Version Build Status


2016-03-29 10 48 16


# Gemfile Rails ~> 5
gem 'notifications', '~> 0.6.0'
# Gemfile for Rails ~> 4.2
gem 'notifications', '~> 0.5.0'

And then run bundle install.

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


Create a Notification

class User
  def follow(user)
    Notification.create(notify_type: 'follow', actor: self, user: user)

class Comment
  belongs_to :post
  belongs_to :user

  after_commit :create_notifications, on: [:create]
  def create_notifications
      notify_type: 'comment',
      actor: self.user,
      target: self)

Get unread notifications count for a user:

count = Notification.unread_count(current_user)

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, main_app.user_path( %> just followed you.
# app/views/notifications/_mention.html.erb
<div class="media-heading">
  <%= link_to, main_app.user_path( %> has mentioned you in
  <%= link_to notification.second_target.title, main_app.topic_path(notification.second_target) %>
<div class="media-content">
  <%= %>

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.


Testing for multiple Rails versions:

make test_51
# or test all
make test

Site Used


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