This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
Alexander Lang (author)
Fri Apr 25 08:59:06 -0700 2008
commit 42613fb213fe912bbc1733d4b616fa9e2a0db8b9
tree 8e21f7eb843cd7e4ab76c5a6b008f8b9dc651732
parent 0ab7bbdf237aa0f8ee57bca78749eb36720b4a06
tree 8e21f7eb843cd7e4ab76c5a6b008f8b9dc651732
parent 0ab7bbdf237aa0f8ee57bca78749eb36720b4a06
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Fri Apr 25 06:22:35 -0700 2008 | [Alexander Lang] |
| |
INSTALL | Fri Apr 25 06:22:00 -0700 2008 | [Alexander Lang] |
| |
MIT-LICENSE | Fri Apr 25 06:22:00 -0700 2008 | [Alexander Lang] |
| |
README | Fri Apr 25 06:27:44 -0700 2008 | [Alexander Lang] |
| |
Rakefile | Fri Apr 25 06:22:00 -0700 2008 | [Alexander Lang] |
| |
generators/ | Fri Apr 25 06:22:00 -0700 2008 | [Alexander Lang] |
| |
init.rb | Fri Apr 25 08:59:06 -0700 2008 | [Alexander Lang] |
| |
install.rb | Fri Apr 25 08:55:20 -0700 2008 | [Alexander Lang] |
| |
lib/ | Fri Apr 25 08:59:06 -0700 2008 | [Alexander Lang] |
| |
routes.rb | Fri Apr 25 06:22:00 -0700 2008 | [Alexander Lang] |
| |
social_feed.yml | Fri Apr 25 08:55:20 -0700 2008 | [Alexander Lang] |
| |
spec/ | Fri Apr 25 06:22:00 -0700 2008 | [Alexander Lang] |
| |
views/ | Fri Apr 25 06:22:00 -0700 2008 | [Alexander Lang] |
README
SocialFeed
==========
This plugin adds a social feed to your rails application. Users can decide what kinds of events they want to see on
their social feed and also wether they want to be sent an email when an event occurs. They can also decide wether others
will receive a notification on their social feed concerning their own actions.
How it works
============
The plugins adds the following things to your application
* a FeedEvent model - this represents an event on the social feed - you will subclass the SocialFeed to create your own
custom events
* a SocialFeedsController - this controller has actions for:
* displaying the social feed for a user (index)
* destroying a SocialFeed
* displaying a settings page where users can
* subscribe to and unsubscribe from events
* subscirbe to and unsubscribe from receiving emails for events
* enable/disable the creation of events concerning their own actions in the application
* a migration that adds 3 fields to your users table to store the event subscriptions
Installation
============
If you are on rails edge (which supports git) you can simply do a
script/plugin install git://github.com/langalex/social_feed.git
If not you need to do this from your rails root:
cd vendor/plugins
git clone git://github.com/langalex/social_feed.git --depth 1
cd social_feed
ruby install.rb
cd ../../..
for the rest see the INSTALL file
Assumptions
===========
the socialfeed plugin assumes that:
* your users are represented via the User model
* your users have an email attribute (used by the feed event mailer)
* the controllers in your application have access to the currently logged in user via the current_user method
Basic User Experience
=====================
After the plugin is installed you can direct your users to the /feed_events url which will show them their personal
social feed. To customize their events the users should go to /feed_events/settings
How to create custom events types
=================================
To create a custom event you should use the built-in feed_event generator:
e.g.: script/generate feed_event new_friend
This creates a new class NewFriendEvent in the app/models/events directory (the class representing the event) as well as
a new_friend_hint.html.erb file in the app/views/feed_events directory (this gets rendered on people's social feed
page). First thing you probably want to do is to customize the hint file.
Secondly you should also customize the two description lines in the model, which will be used on the setting page. By
commenting out either line, you can remove the corresponding line from the setings page.
If you want your users to be able to receive emails for your new event, add a method deliver_new_friend to the
FeedEventMailer found in app/models/feed_events. After adding the method a checkbox for this event will automatically
appear on the settings page.
Creating actual events
======================
In order for the social feeds of your users to get filled with events you have to create instances of your custom event
classes. You have a number of choices here. I would recommend to use the rails observers, so for a NewFriendEvent you
would probably create a FriendShipObserver with an after_create hook that creates the event when after a new friendship
has been created. As soon as you start creating lots of events for a single action (e.g. tell every user that user X and
user Y are now friends) I would highly recommend using something asynchronous like the workling plugin and starling.
Warning: Do not create events using create! but use the create method (without the bang) - when a user has not
subscribed to an event, a validation in the FeedEvent class will fail so that the event won't be created. If you use the
create! method you will get an exception instead.
Gotchas
=======
For all models of you application you use as a source for a FeedEvent, add a
:has_many :feed_events, :dependent => :destroy
so that the feed events are destroyed when objects are destroyed. Otherwise the social feeds of you users will get into
trouble with sources of events missing.
Contact
=======
Copyright (c) 2008 Alexander Lang, released under the MIT license
Contact: email: alex[at]upstream-berlin.com, twitter: langalex, blog: http://upstream-berlin.com/blog, skype: langalex



