Understanding Ruby on Rails

At Neomind Labs, we talk a lot about Ruby and Ruby on Rails. It's our favorite topic (and has been for over 15 years). But we realize that only some know Ruby on Rails as intimately as we do. Someone recently asked us, "Who's Ruby?" and we realized it was time to do a formal introduction to Ruby and Ruby on Rails. 

All applications and websites are written with a specific type of computer language. We refer to these as “programming languages”. A developer can use one of a dozen different languages to write a program (AKA application, AKA software, AKA website).

Ruby is a high-level programming language that is dynamic, object-oriented, and interpreted. It was designed and developed by Yukihiro "Matz" Matsumoto in the mid-1990s with the goal of creating a language that was both easy to use and powerful, optimizing for programmer joy. As a result, Ruby has a simple and elegant syntax that is easy to read and write, making it a popular choice for building web applications, automation scripts, and other software projects.

Ruby on Rails, often called Rails, is a web application development framework written in Ruby. It was created by David Heinemeier Hansson and released as open-source software in 2004 (over 19 years ago!). Rails is built on top of the Model-View-Controller (MVC) architecture pattern, which separates an application into three interconnected components:

  • The data model (the database).
  • The user interface (the web pages).
  • The controller (the logic that handles user input and manages communication between the model and the view).

Since the original release of Rails, many frameworks have adopted this approach. and it has become something of a standard in web application development. (Although, I’d argue even the few remaining survivors don’t hold a candle to the original.)

One of the most significant benefits of using Rails is that it emphasizes convention over configuration, meaning that developers can build complex web applications quickly and easily by following a set of standardized conventions and best practices without having to piece together tools. This allows developers to focus on building features and functionality rather than configuring the framework or worrying about low-level details. Basically, it allows developers to stay focussed on the user. 

Rails is a “batteries included” full-stack framework, and comes with a rich set of tools and libraries, such as Active Record for database management and Action Pack for handling web requests and responses, which makes it easy to build high-quality web applications.

Some of the key features of Ruby on Rails include:

  1. Routing: Rails includes a powerful routing system that allows developers to map URLs easily to specific controller actions.
  2. ActiveRecord: This is Rails' built-in Object Relational Mapping (ORM) library that makes it easy to work with databases in an object-oriented way.
  3. Scaffolding: Rails includes a scaffolding tool that can generate basic code for models, views, and controllers, allowing developers to build out their application's basic functionality quickly.
  4. Testing: Rails has a strong emphasis on testing, with built-in support for unit tests, functional tests, and integration tests.
  5. Convention over Configuration: Rails provides a set of standardized conventions and best practices that make it easy for developers to build complex web applications quickly and easily.

In layman's terms, 

Routing is like giving directions to someone who is visiting your website. Just like you would give directions to a friend visiting your house, developers use routing in Rails to map URLs to specific parts of their website. This separates the naming of your files from the URLs people visit and makes it easier to give things friendly names.

ActiveRecord is a tool that helps developers work with databases in a more organized way. It's like a librarian who helps keep all the books in order and makes it easy to find the book you want. In addition, ActiveRecord helps developers organize and access data in their website, making it easier to build features and functionality without having to use a deep knowledge of SQL to accomplish simple tasks.

Scaffolding is like a template or starting point for developers building a website. It's like having a set of building blocks to work with, so they can quickly build the basic structure of their website without starting from scratch.

Testing consists of checking and double-checking your work to ensure everything works correctly. Just like a chef might taste their food before serving it, developers use testing in Rails to ensure their website works correctly before it goes live. Automated testing helps ensure end-users never have to report the same bug twice.

Convention over Configuration means that Rails provides a set of standardized practices and rules that developers can follow. It's like having a recipe for baking a cake - following the recipe makes it easy to bake a cake, even if you've never baked before. Similarly, following the conventions and rules in Rails makes it easier for developers to build complex websites quickly and easily. In practical terms, this means you may only have to specify necessary information (e.g. login credentials), or differences from the community norms, making the code much smaller and easier to read.

Combined, these features mean that Ruby on Rails applications are simple to build, easy to improve, less bug-prone, secure by default, and easy to maintain, even if the maintainer and developer are different people.  They harness the potential for complex build-outs, thanks to the scaffolding and strong conventions. 

Ruby and Ruby on Rails are powerful tools for building web applications. Their popularity and continuous widespread adoption over the past nineteen years make them a great choice for developers looking to build scalable and maintainable software projects.