# ActivityStream

Activity Stream will keep trace of your activity on the db.

This Gem is sutable for whom have installed [the plugin activity_stream by evilmarty](github.com/evilmarty/activity_stream) and want to use it with a Gem.

All tests are passing.

## Installation

Add this line to your application’s Gemfile:

gem 'activity_stream'

And then execute:

$ bundle

Or install it yourself as:

$ gem install activity_stream

## Usage

See below original readme.

## Contributing

Contributions are welcome, but be aware that we’re not the original developers of the code and our own part was to move the existing code into a Gem.

  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

ActivityStream

A dead easy way to log activity streams.

Installation

script/plugin install http://github.com/evilmarty/activity_stream

Then run…

script/generate activity_stream

this will create the Activity model and place it in your app/models path as a migration file.

DON’T FORGET to add :activity_observer to your config.active_record.observers in environments.rb like so…

config.active_record.observers = :activity_observer

Usage

For all the models you want to log an activity for do the following…

class Comment < ActiveRecord::Base
  log_activities
end

this will log an activity for :create, :update and :destroy. To only log an activity for :create simply say so…

class Comment < ActiveRecord::Base
  log_activities :create
end

You can also pass a Proc which can be used to check whether to log the activity or not, just return false

class Comment < ActiveRecord::Base
  log_activities :create, :destroy
  log_activities :update do |record|
    record.status == 1
  end
end

and you can call it multiple times for different actions with different Procs

Now once your done with your logging, it’s time to define your actors. Like so…

class User < ActiveRecord::Base
  acts_as_actor
end

and now when you want to log activities simply do the following in your controllers or wherever you please

class CommentsController < ApplicationController
  def create
    current_user.log_activity('web') do
      Comment.create params[:comment]
    end
  end
end

that little argument for log_activity is the context of the activity but you can omit it should you feel so.

TODO

  • write better doc

  • add support for indirect objects maybe?

Copyright © 2009 Marty Zalega ([email protected]), released under the MIT license