CMSSurveyReportRoR

Review report of "Ruby on Rails" Web application framework

Person(s) reviewing it: init [ät] nadir.org

Official Information: RoR: Website, Documentation, Community, Authors,

Ruby on Rails, often called RoR, or just Rails, is an open source web application framework written in Ruby that closely follows the Model-View-Controller (MVC) architecture. It strives for simplicity and allowing real-world applications to be developed in less code than other frameworks and with a minimum of configuration. The Ruby programming language allows for extensive metaprogramming, of which Rails makes much use. This results in a syntax that many of its users find to be very readable... (continue with the wikipedia-article)

Software version(s): Latest release: 1.1.6 / August 10, 2006
Version 1.2 expected soon (Dec 06 / Jan 07)
License: MIT License

Status of the report:

DONE Nov. 22 06 // init

What We Have

Most of the RoR-Community does not believe in standardized higher level-components such as Events-Calendar- or Image-Gallery-Plugins. There is also no such thing as a "one-size-fits-all" build-in admin interface.

Instead the framework gives you the tools and techniques to write these components for your specific use case. Instead of maintaining standardized higher level-components that force you to work with a given set of features, if you need them or not, the Rails-Community shares a couple of "best-practices" or recipes of how to do common tasks in web-applications. This makes it easy to find your way around in other opensource Rails-Applications and allows for easy and specific code re-use.

So for the lack of pre-build features and functionality in the RoR-Framework there is not much use in going step-by-step through the list of "What We Have" and "What We Want".

There are a couple of low-level plug-in components however, some of which are written and maintained by members of the Rails-Core-Team. They offer solutions for common tasks like versioning, tagging or logging (List of popular plugins). This functionality is kept inside plugins to keep the main Rails-Framework concentrated on the main duties of a web-framework (MVC).

I will go through the list an try to provide links to relevant resources for the specific topic.

Since I'm far from being a Rails-Expert, please add your own information and correct me where it's necessary .

FeatureScore (0-5)Remarks
Anonymous open publishing  
easy mirroring capability Rails caching normaly works after the first request of the page, but the RoR-Framework has a few features that could make pre-production of CMS-Pages very easy. Namely there is a "render-to-string"-method for views and so called filters that can be used to trigger actions like writing a changed page to a file
syndication -out/in Out: Build rss and atom feeds In: http://raa.ruby-lang.org/project/rss/ http://simple-rss.rubyforge.org/ http://sporkmonger.com/projects/feedtools/
search List ofSearch-related plugins
The ability to create multiple instances  
Multimedia handling Upload files / Rmagick image manipulation
Categories  
Good performence on affordable hardware RoR is fast when it comes to development and maintainance. It's everyday performance on a production webserver is rather bad. IMHO the solution to this problem is a smart split between the different tasks a IMC-CMS has to perform. There are tons of read-only requests for articles and images. These should be outsourced to static files maybe even on different (mirror-)servers. The rest: posting, comments, search, site-admin does not look like a performance-critical task to me. / Some tips for tuning: "A Look at Common Performance Problems in Rails"
internationalisation http://wiki.globalize-rails.org/globalize/
translation From a RoR-point of view a "translation" would be an article that is self referential model using another model (transaltions) as a join
comments Here is how RoR handles associations like "An Article has many comments." Or "A comment belongs to an article."
anti-abuse measures http://dev.2750flesk.com/validates_captcha/
easy moderation  
calendar  
features  
documentation http://rubyonrails.org/docs

What We Want

FeatureScore (0-5)Remarks
Logins HowtoAuthenticateWithRubyNetLdap / HowtoAuthenticateViaLdap in Ruby on Rails
access control Authentication
user moderation  
open editing Versioning Content / wiki-like Markup-Support for Rails
profile  
user notifications by Mail or by Jabber-IM
notify moderator button  
podcasting/vodcasting  
redundancy (DB content storage)  
version control Versioning Content
customisable skins by user  
accessability  
xhtml validation  
GIS metacarta-geoparser implements MetaCarta‘s GeoParser API or Google Maps plugin
photo galleries Rmagick for making thubnails
licensing options  
image manipulation Rmagick image manipulation
p2p integration http://rubyforge.org/projects/rubytorrent/ or http://rubyforge.org/projects/libtorrent-ruby/
social networking / filtering systems  
wysiwyg  
tagging: Tagging in Rails
anti-bot systems like captchas http://dev.2750flesk.com/validates_captcha/
easier installation Since all rails-apps share the same over all directory-structure they are quite easy to set up. It is easy to distribute 3rd party libs or even a specific version of the whole framework with your application. For large setups there is a automated deployment tool called Capistzrano
cross site search  

Back to the survey