| 1 |
= Station |
| 2 |
|
| 3 |
Station is a Rails Engine focused on Content Management and Distributed Social Software. |
| 4 |
|
| 5 |
Rails = Ruby + Web Development |
| 6 |
Station = Rails + Content Management |
| 7 |
|
| 8 |
Station provides your Rails application with a <em>CMS framework</em>. This means authentication, authorization, roles, permissions, tags, etc... but from a very flexible scope. |
| 9 |
|
| 10 |
{Web page}[http://rstation.wordpress.com/] |
| 11 |
|
| 12 |
== Features |
| 13 |
|
| 14 |
* Agents |
| 15 |
* Authentication: Login/Password, {OpenID}[http://openid.net/], {Central Authentication Service (CAS)}[http://www.ja-sig.org/products/cas/], CookieToken |
| 16 |
* Authorization: Access Control, Roles and Permissions (RBAC) |
| 17 |
* Activation: Email validation, Password reset |
| 18 |
* Resources |
| 19 |
* Atom feeds, {RFC 4287}[http://tools.ietf.org/html/rfc4287] |
| 20 |
* AtomPub protocol, {RFC 5023}[http://tools.ietf.org/html/rfc5023] |
| 21 |
* Contents and Containers relations |
| 22 |
* Folksonomies: Tags, Taggable models |
| 23 |
* Logos for models |
| 24 |
* Sortable lists for models |
| 25 |
* Integration with exception_notification plugin |
| 26 |
|
| 27 |
== Architecture |
| 28 |
|
| 29 |
You can add any of the following functionality to any of your ActiveRecord models: |
| 30 |
|
| 31 |
=== Basic |
| 32 |
ActiveRecord::Agent:: a model with authentication, authorization and potencial to perform actions over Resources, e.g. a User |
| 33 |
ActiveRecord::Resource:: a model that have, at least, {CRUD}[http://en.wikipedia.org/wiki/Create,_read,_update_and_delete] operations and can be imported/exported in different formats, like Atom/RSS. |
| 34 |
ActiveRecord::Content:: a Resource that belongs to a Container, e.g. a Post |
| 35 |
ActiveRecord::Container:: a model that have many Contents, e.g. a Project |
| 36 |
ActiveRecord::Stage:: a model that defines an RBAC Authorization framework for Agents, e.g. a Group |
| 37 |
|
| 38 |
=== Complements |
| 39 |
ActiveRecord::Taggable:: a model that can be tagged |
| 40 |
ActiveRecord::Logoable:: a model with Logo |
| 41 |
ActiveRecord::Sortable:: a model with a sortable list |
| 42 |
|
| 43 |
== Generators |
| 44 |
|
| 45 |
=== Agents |
| 46 |
An Agent has the capability to post Contents to Containers. An User is the example of Agent |
| 47 |
|
| 48 |
script/generate station_agent Model |
| 49 |
|
| 50 |
=== Resources |
| 51 |
|
| 52 |
script/generate station_scaffold Model attributes |
| 53 |
|
| 54 |
== Example |
| 55 |
|
| 56 |
=== Blog |
| 57 |
Create personal blogs with a pair of commands: |
| 58 |
|
| 59 |
script/generate station_agent User |
| 60 |
script/generate station_scaffold Article content:text |
| 61 |
|
| 62 |
rake db:migrate |
| 63 |
|
| 64 |
Users now can entry their own Articles |
| 65 |
|
| 66 |
You can add AtomPub support for Articles creation. You must implement params_from_atom method in Article model: |
| 67 |
|
| 68 |
def self.params_from_atom(entry) |
| 69 |
{ :body => entry.content.xml.to_s } |
| 70 |
end |
| 71 |
|
| 72 |
== Requirements |
| 73 |
|
| 74 |
* Rails 2.3.4 |
| 75 |
* RubyGems: |
| 76 |
* mislav-will_paginate |
| 77 |
* ruby-openid (optional) |
| 78 |
* atom-tools (optional) |
| 79 |
* nokogiri, prism (optional) |
| 80 |
* Rails Plugins: |
| 81 |
* attachment_fu |
| 82 |
* exception_notification (optional) |
| 83 |
|
| 84 |
== Installation |
| 85 |
|
| 86 |
=== Plugins |
| 87 |
|
| 88 |
You need attachment_fu for Logos and Attachments support: |
| 89 |
script/plugin install git://github.com/technoweenie/attachment_fu.git |
| 90 |
|
| 91 |
To install Station, run: |
| 92 |
script/plugin install -r stable git://github.com/atd/station.git |
| 93 |
|
| 94 |
Install exception_notification plugin if you want to receive debugging emails from your application |
| 95 |
script/plugin install git://github.com/rails/exception_notification.git |
| 96 |
|
| 97 |
=== Gems |
| 98 |
|
| 99 |
Run rake gems:install to install the required gem, mislav-will_paginate |
| 100 |
|
| 101 |
You can install this aditional gems: |
| 102 |
|
| 103 |
* ruby-openid, for OpenID authentication support |
| 104 |
* atom-tools, for AtomPub support |
| 105 |
* nokogiri, prism, for HTML management, Microformats discovery |
| 106 |
|
| 107 |
|
| 108 |
== TODO |
| 109 |
|
| 110 |
* Agents authentication support: OAuth |
| 111 |
* Microformats |
| 112 |
* RDF: FOAF + SIOC |
| 113 |
|
| 114 |
|
| 115 |
Copyright (c) 2008-2010 Antonio Tapiador, released under the LGPL license |