Dam

A ruby framework for Activity Streams, using Redis as a backend

Assuming you have added gemcutter.org to your ruby gems sources, dam is easy to install using

gem install dam

Using Dam

You need to configure dam to connect to your current redis installation. To do that, put this line somewhere in your code Dam::Storage.database = Redis.new

First, define your activities. You can use any attributes you wish, and give blocks or static values, as long as they are serializable to json

require 'dam'
Dam.activity :comment_posted do
  author { "name" => params[:comment].user.name, "id" => params[:comment].user.id }
  published { params[:comment].created_at.to_s }
  comment { "id" => params[:comment].id, "excerpt" => params[:comment].excerpt }
  action "post"
end

Then declare streams that will accepts these activities

require 'dam'
Dam.stream :activities_from_bob do
  limit 10
  accepts :action => "post", :author => {"name" => "bob"}
end

Finally, just post your activities: Dam.post :comment_posted, :comment => my_comment

And access the stream's activities using: Dam::Stream[:activities_from_bob].all.each {|activity| puts activity.comment["excerpt"] }

Further possibilities

You can create templated streams, that is, streams who first have to be instantiated to start receiving activities. To do this, use a route-like name, such as

Dam.stream "project/:project" do
  limit 15
  accepts :project => {"id" => params[:project]}
end

You can then instantiate these projects to start receiving events

Dam::Stream["project/12345"].instantiate!