Narrator <img src=“https://secure.travis-ci.org/jweakley/narrator.png?branch=master” />

Narrator is an activity library for Ruby on Rails that allow you to track what is happening on models and later use to build an activity or news stream. Tracking is done at the controller level with a simple narrate_resource command (which was inspired by the simplicity of Ryan Bates’ CanCan gem).

Installation

In Rails 3 add this line to your application’s Gemfile and run the bundle command.

gem "narrator"

Once you have the Narrator gem installed you will need to run the generator:

rails generate narrator:install

This generator will add the migrations needed for the activity tracking. Currently this only works for ActiveRecord.

After the migration has been added you will need to migrate your database to run the new migration.

rake db:migrate

Getting Started

Narrator expects a current_user method to exist in the controller. First, set up some authentication (such as Authlogic or Devise).

1. Mark a Model as Narratable

Any model that we would like to have tracked by narrator needs to have narratable_model added to it.

class Article
  narratable_model
  ...
end

See Narrated Model for more details and features.

1. Mark a Model as Narratable

Any model that we would like to create activites (normally just User) needs to have narratable_actor added to it.

class User
  narratable_actor
  ...
end

See Narrated Actor for more details and features.

3. Narrate the Model’s activities from the controller

The narrate method in the controller will narrate something important.

def create
  ...
  @article = Article.new(params[:article])
  ...
  narrate @article if @article.save
  ....
end

In this example, if the article is successfully saved, an activity gets logged for the article.

See Tracked Activities for more details and features with tracked activities.

Future Features

Automagical Narration

class ArticlesController < ApplicationController
  narrate_resource

  def create
    ...
    respond_with @article
    # @article is automaticly tracked if it is valid
  end
end

Wiki Docs

  • Coming Soon

Questions or Problems?

If you have any issues with Narrator which you cannot find the answer in the documentation, please add an issue on GitHub. Alternatively you can fork the project and send a pull request (limit one high five and/or fist bump per contribution).

Please ensure the tests are passing by running ‘bundle` and `rake`.

Special Thanks

Narrator was inspired in part by Ryan Bates railcasts and CanCan.

Internet high fives and/or fist bumps to the Narrator contributors.

This gem is created by Joe Weakley and is under the MIT License.