The muck activity engine is part of the muck framework and relies upon the muck_engine. The main engine can be found here:

The easiest way to get started with muck is to generate your application using a template:

$ rails <your-app> -m

Add optional functionality with the following command:

$ rake rails:template LOCATION=


This engine implements simple activity tracking.

Models that can have activity feed should call 'has_activities'

  class User

Adding an item to the activity feed requires 'acts_as_activity_source' which then profiles the method 'add_activity'

add_activity(feed_to, actor, item, template, check_method)

feed_to - contains an array of objects (typically users) that have use acts_as_activity_user
actor - the user performing the action
item - a reference to the object that 
template - the template (partial) to use to render the activity
check_method - and optional method to call on each object in the feed_to array that determines whether or not to add the activity

  add_activity(user.feed_to, user, comment, 'comment')


By default 'has_activities' will add a simple 'can_view?' method:

def can_view?(check_object)
  self == check_object

This method determines whether or not the check_object has access to the current object's activity feeds. For example, if the intent is to recover the activities for a given user where the user is '@parent' thus:


The can view method will determine whether or not the current_user has the right to view the activity feed.

In most instances you will need to override this method to implement proper security. For example, for a group that has an activity feed you might add a can_view? method like this:

def can_view?(check_object)
  self.member?(check_object) || (check_object.is_a?(User) && check_object.admin?)


If you would like to enable comments for your project's activities feeds you can do so by adding an entry to GlobalConfig.yml (configuration file added by muck)

enable_activity_comments: true

If you would like to add live updates to the user's activity feed you can do so by adding an entry to GlobalConfig.yml (configuration file added by muck)

enable_live_activity_updates: true
live_activity_update_interval: 5

Note that this will poll the server every 5 seconds and so will increase server load and bandwidth usage.

Copyright © 2009 Justin Ball, released under the MIT license