Ruby on Rails (ROR) is a web framework that uses the Ruby language to build database-agnostic websites very quickly. As far as agile web development goes, ROR is one of if not the fastest way to iteratively build a site.
ROR is very strongly governed by the laws of DRY (“Don’t Repeat Yourself”) and Convention over Configuration. In other words, if you develop using ROR the way it’s intended, you should see very high returns on your effort.
The basic architecture of a rails app looks like this:
These are some of the major components. A rails app includes:
- Ruby – the programming language used
- Rails – the web framework
- Web server – WEBrick is the default, but Passenger is the de facto standard for production environments
- Database – Rails interacts with many different databases through adapters. This achieves the ultimate goal of being able to switch databases at any point without changing any code.
- ActiveRecord – The standard ORM that handles the mappings of database rows to Ruby objects.
- ActiveResource – Allows ruby apps to connect to each other or other REST based web servers.
- MVC stack – The standard separation of responsibilities for the views, models and controllers implemented in a lot of different languages and frameworks
Rails also includes a bunch of other modules, tools and concepts that I haven’t touched on here for the sake of simplicity, but this should be enough to provide a basic understanding.
Ruby by itself is a very readable language. Due to a very light sprinkling of syntactic symbols is generally easy to comprehend even by non development types. This makes it ideal for development/BA types/Customers to verify correct behaviors in the code.
The selling point of ROR is the speed it takes to get a high quality site up and running quickly. This is different from many other web stacks such as ASP.NET (incl ASP.NET MVC), PHP, CF where the database is still treated very much as an “outside” component of a website that’s maintained separately.
Due to ActiveRecord, rails generation and rake migrations; each change is incremental and includes both a repeatable upgrade/downgrade task that is database agnostic.
Add to this a very test-centric approach to development, cross platform support and significantly lifting of the framework of a lot of the plumbing code, getting a serious app up and running quickly is a reality of ROR.
However, ROR is not without its disadvantages – the most popular of which is proper hosting support. Although not a shortcoming of rails in itself, many web hosts have treated rails hosting as something that just needs to be installed so it can be added on their feature sheet. The result can be very shaky rails apps. If you’re looking for a good host, consider a ruby-centric host such as:
Ruby is a very simple language that’s easy to learn and easy to read. Coupled with the Rails framework results in a very fast and agile way to get web applications up and running.
If you’re a Django/Pylons/ASP.NET/JSP/PHP developer interested in what ROR has to offer, then it’s worthwhile spending a couple of days working through of the thousands of online tutorials to see how a Rails evolves.
At this point, even if you decide Rails isn’t for you, you will hopefully touch on many of the standard design principles it’s based on that can be applied to any language.

Recent Comments