Ruby on Rails - or simply, Rails - is an open source, rapid web development framework, with a continuous goal of maximizing developer happiness and productivity. Created nearly a decade ago, Rails today forms the backbone of many of the most popular applications on the web, and has an incredibly vibrant and passionate community. In this study quide segment, we'll review the history of Ruby of Rails.
The Foundation of Rails
Rails was created in 2003 by David Heinemeier Hansson, while working on the code base for Basecamp, a project management tool, by 37signals. David extracted Ruby on Rails and officially released it as open source code in July of 2004. Despite rapid iteration of the Rails code base throughout the years, it has stuck to three basic principles:
- Ruby Programming Language
- Model-View-Controller Architecture
- Programmer Happiness
The Ruby Programming Language
Ruby on Rails is written in the programming language, Ruby, which was created by Yukihiro Matsumoto a.k.a. Matz in 1995. Matz created Ruby from some of his favorite programming languages, such as Lisp, Perl, and Ada, while placing significant emphasis on "trying to make Ruby natural, not simple." David, himself, fell in love with Ruby upon first using it.
A big part of what makes Ruby so special to work with is just how much expression you can pack into few lines of code.
Eventually, there was a huge surge in Ruby's popularity in the mid 2000s. Much of its success can be attributed to the popularity of Rails.
Baked into the architecture of Rails is the software pattern, referred to as MVC (Model-View-Controller). This provides a clean isolation among the business logic in the Model, the user interface through the Views, as well as the processors handling all sorts of user requests in the Controller. This also makes for easier code maintenance.
Rails heavily emphasizes "Convention over Configuration."
Rails was created with the goal of increasing programmers' happiness and productivity levels. In short, with Rails you can get started with a full-stack web application by quickly creating pages, templates and even query functions. Rails heavily emphasizes "Convention over Configuration." This means that a programmer only needs to specify and code out the non-standard parts of a program. Even though Rails comes with its own set of tools and settings, you're certainly not limited to them. Developers are free to configure their apps however they wish, though adopting conventions is certainly recommended.
A Look Back
As we look back at the history of Rails, let's review some of the more significant releases over the years.
- Rails 1.0 (Dec 2005) - Mostly polishing up and closing pending tickets from the first release along with the inclusion of Scriptaculous 1.5 and Prototype 1.4.
- Rails 1.2 (Jan 2007) - REST and generation HTTP appreciation
- Rails 2.0 (Dec 2007) - Better routing resources, multiview, HTTP basic authentication, cookie store sessions
- Rails 2.0 (Nov 2008) - i18n, thread safe, connection pool, Ruby 1.9, JRuby
- Rails 2.3 (Mar 2009) - Templates, Engines, Rack
- Rails 3.0 (Aug 2010) - New query engine, new router for controller, mailer controller, CRSF protection
- Rails 3.1 (Aug 2011) - jQuery, SASS, CoffeeScript, Sprockets with Assets Pipeline
- Rails 3.2 (Jan 2012) - Journey routing engine, faster development mode, automatic query explains, tagged loggin for multi-user application
Over the years, Rails has indeed made it easier for beginners to dive into web development, as well as build large complex applications - some of which include Twitter (at one point), GitHub and, of course, 37signals' very own Basecamp. Although it has often been criticized for performance and bloat, Rails continues its iterations along with an ever-growing developer community and a vibrant ecosystem.
Rails is even offered by many hacker schools today, as part of their curriculum for web development.
A Peek Ahead
For updates on Rails' development in the future, or even a deeper look back to learn how the various technologies were integrated in past versions, be sure to review the following links: