Overview of Ruby on Rails
How does Ruby on Rails make good on seemingly outlandish claims? This Web framework, based on the Ruby programming language, makes various assumptions on behalf of the Web developer:
"Rails is opinionated software. That is, it assumes that there is a best way to do things, and it's designed to encourage that best way - and in some cases discourage alternatives. If you learn 'The Rails Way' you'll probably discover a tremendous increase in productivity. If you persist in bringing old habits from other languages to your Rails development, and trying to use patterns you learned elsewhere, you may have a less happy experience."
(Source: What is Rails? Getting Started with Rails)
The guiding principles for Ruby on Rails also convey the effectiveness derived:
DRY - Don't Repeat Yourself. In other words, avoiding repeating code.
Convention over Configuration - Accept the "The Rails Way" (i.e., the assumptions made on your behalf) and get on with it!
RIP - Be RESTful in Patterning. Ruby on Rails asserts that REST (Representational State Transfer) is the best pattern for Web applications, as organizing applications around resources and standard HTTP verbs is highly effective.
Fundamental to Ruby on Rails, the Model-View-Controller (MVC) architecture tangibly illustrates how the above assumptions and principles are put into practice:
Models - In Ruby on Rails, models represent application data - and the rules to manipulate that data. Because database interaction remains a focal point for Ruby on Rails, models are used for interaction with tables in a database. Because business logic tends to be concentrated in models, Ruby on Rails offers isolation from the user interface.
Views - In contrast to Models, Views represent the application's user interface. With a focus then on presentation, Views are typically HTML files embedded with Ruby code.
Controllers - Described as the glue between Models and Views, Controllers mediate interactions between the same.
Theory aside, Ruby on Rails comes with a number of components to accelerate the development of Web applications. Broadly speaking, these components provide a ready-to-use implementation of the MVC architecture by leveraging and extending Ruby.