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 .
Feature | Score (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
Feature | Score (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 |