In 2004, the web design company 37signals (known today as Basecamp) published the project-management application basecamp. This program contained features like to-do lists, time tracking options as well as messaging systems. One portion of the software was a base architecture that was designed by one of the product’s programmers, David Heinemeier Hansson. In the same year this base architecture was extracted and published as its own open source web application framework in 2005. The name of this well-known framework that was developed is Ruby: Ruby on Rails (RoR or just ‘Rails’ for short). Nobody could have guessed upon its publication that the software would end up being one of the most popular solutions for creating new web applications.

What is Ruby on Rails?

Ruby on Rails has been constantly advanced by developers since the framework made first made its appearance under an MIT license. All of these developments have remained true to one important principle on which the RoR was founded: ‘Don’t repeat yourself’ (DYR). Each bit of information in a project based on the rails framework should only be present just one time. Following this concept, it’s sufficient to only define a table’s cells within the database without recording this information in the source code or in a separate configuration file. The implemented module active record reads this information directly from the database.

The second design paradigm that RoR adheres to is ‘Convention over configuration’. The RoR framework presents its users certain conventions when it comes to naming classes. Developers following these conventions are able to save a vast amount of time when it comes to configuration. However, Ruby on Rails also allows alternative configurations, meaning users are still able to enjoy a high level of flexibility when it comes to programming their web apps.

Ruby: the flexible and platform-independent language of the Rails framework

In the mid-nineties, the Japanese programmer, Yukihiro Matsumoto, published the object-oriented language, Ruby. At first almost exclusively used in Japan, the script language has since established itself as a popular alternative to the industry leaders PHP, Python, etc. And there’s a reason for the program’s success: during the development phases, Matsumoto made it his goal to ensure that programming always remains fun and that’s why he incorporated the best aspects of other languages into Ruby. As an interpreted script language, code is executed by an interpreter, which means that it has a small disadvantage when compared with compiled scripts; at the same time, however, this aspect makes Ruby more dynamic and flexible. Ruby code is platform independent due to the fact that there are specific interpreters for all the conventional operating systems. One basic characteristic of Ruby is the fact that it has a metaparadigm ability, a feature that also characterises C++. This means that programmers don’t have to settle with one certain programming paradigm. Thanks to the ‘principle of least surprise’, use of the script language is intuitive and, in general, isn’t generally coupled with unexpected behaviour. As an open source software registered under the free BSD licence, Ruby is supported by a large and active community that has contributed to numerous current program libraries. Most of these libraries are subject to this licence and play an important role when it comes to developing modern web applications. Installing libraries can be done with the help of so-called RubyGems One of these Gems, to which the public Web APIs Google and Facebook both count, is the Rails framework.

Model-view-controller architecture (MVC)

Ruby-on-Rails running time environments are closed systems. They contain the interpreter, the necessary programming libraries as well as the respective scripts. Every Rails project is subject to an automatically generated directory structure that separates scripts, configurations, classes, content, etc. from one another. Thanks to the structural approach, it’s easy to maintain this web application. Here, the term model-view-control architecture is used. This architecture’s layers is set up as follows:

Model

Generally rails applications are connected to relational databases. In order to communicate with the corresponding database management system and produce and/or manipulate entries, the Ruby framework needs models. These depict classes on database tables and individual attributes on their corresponding columns. This model layer is based on the ORM framework (object-relational mapping), Active Record. Since Rails 3.0, users have also had access to other ORM libraries, like Sequel.

Views

The view layer, or presentation layer, is required in order to access data from the model layer and depict this. To this end, Ruby on Rails uses the class, Action View, which supports a wide range of different output formats. Rendered in HTML document form, Views present the corresponding data to requesting users. XML or JSON documents are used to make access to database entries available to other programs or services.

Controller

The controller constitutes the interface between the Model and the view layer. It processes arriving requests through the web browsers and calls up the corresponding models from the database that are responsible for visualisation. As the central control unit for the Rails application, Controller also manages the caching behaviour and summarises the different requests of individual clients into a session.

The standard components of RoR frameworks

As a framework for web applications, Ruby on Rails’s standard version offers all of the components developers need to program a well-rounded application. The only additional requirements are to install Ruby, an SQL database, and the packet manager, RubyGmes. For the SQL database requirement, the Rails team recommends the C-based open source programming library, SQLite, which contains a relational database system. Here are the standard modules of Ruby on Rails framework.

  • Action Controller: this module allows you to create the interfaces between the database entries and programs and accessing users.
  • Action View: Action View makes it possible to generate Views for individual entries and controllers. In terms of naming, there’s a convention that requires all Views to be named after their corresponding controller.
  • Active Record: this module involves a central module for manipulating the database of your Rails application. Users wishing to adhere to conventions regarding naming and type will have to do a little bit of configuring in order to generate individual models with this module. The optimal tool to this end, Ruby on Rails offers the powerful scaffolding system in order generate interfaces for the four CRUD components, which present datasets on object-oriented levels.
  • Active Resources: this module implements the object-relational mapping for REST web services. Like Active Record, this component also aims to cut down on configurations.
  • Action Mailer: Action Mailer makes it possible to send and receive e-mails in your web application and makes it easy to setup an e-mail registration.
  • Active Support: The module active support contains different useful auxiliary programs classes and standard library extensions.
  • Railties: this component helps the various RoR frameworks work together. To this end, each module has implemented its own railtie in order to start the installation process or carryout configurations on the framework. Railties are furthermore necessary in order to add customised modules to Ruby on Rails

The following joke translated from the German wikibooks.org entry on RoR highlights an important point about the framework:

  • Two developers are having a conversation about programming languages. The first programmer: ‘I work with Java and give PHP to my kids to play with’. To this the second programmer answers: ‘I play with my kids and let Ruby do the work for me!’

While of course an exaggeration, there’s a certain element of truth to the joke. Java is considered an excellent choice for complex solutions and is therefore often used for frameworks in different professional settings. But programming with this platform-independent language proves to be anything but easy and can often prove quite time consuming. As an interpreted script language, Ruby also isn’t bound to any certain platform. At the same time coding with Ruby is much faster and it’s easy to adjust the code, which is much less extensive in the first place. The interpreter language also leads to the fact that the speed of the developed applications is slower than with comparable Java applications. In comparison to Java, PHP also has some advantages when it comes to simplicity. It’s not without reason that the language is considered the standard solution when it comes to web development; it’s also the basis of different content management systems, like WordPress, TYPO3, or Joomla. Due to the fact that PHP was set up more or less in an arbitrary manner and hasn’t always been object oriented, designing upgrades for web applications that were developed using older version can sometimes be quite difficult. Ruby on Rails contains an integrated framework that allows programmers to test the functionality of their applications at any time. Thanks to this feature, mistakes can be caught and corrected early on. Web 2.0 technology like AJAX can only be used with fewer lines. Both Ruby and the Rails framework community both feature large and growing communities, both of which offer an impressive array of extensions. The innovative philosophy of Rails, i.e. striving to provide developers with the simplest approach to coding, has been a source of inspiration for many other new frameworks. Symfony, CakePHP and the Zend Framework are all examples of such approaches.

For whom is the Ruby Framework best suited?

Ruby on Rails offers everything that developers creating modern web applications need: excellent structures for creating interfaces, the ability to easily set up connections to SQL databases as well as the possibility to use web technologies, like AJAX. The clear principles of ‘Don’t repeat yourself’ and ‘Convention over configuration’ offer the basis for clean and concise code that’s easily written. Some configurations can be achieved without any problems, as Ruby provides programmers with all the liberties they may need. This makes the framework suitable for both beginners as well as experienced programmers who’ve previously only worked with script languages.  Thanks to the scaffolding system, prototypes of planned web projects can be quickly drafted. And due to the integrated test environment, programmers are able to check their applications for possible errors during the development phase. Ruby on Rails is also ready to tackle more complicated applications. With the help the extensions, RubyGems, programmers are able to add the required interfaces, libraries, or optical features to their projects. Given that Ruby and the RoR framework are subject to the free BSD licence, using some of these extensions may entail new costs when it comes to hosting your web project. Despite its user-friendliness, it’d be a mistake to assume that you don’t need any programming skills to get started with the framework. In contrast to the joke above, Ruby isn’t able to relieve programmers of all the work involved. Regarding operation speed, RoR applications still aren’t as fast as those of the competition. The code is first executed when users access the respective content, which is why processing the inbound inquiries takes a bit longer logistically speaking than with pre-compiled lines of code. Programmers will have to forego using the Rails framework if they wish to organise their application with content management systems like Durpal, Joomla, or WordPress. Like many other platforms, these are all based on PHP. There are, however, many CMS solutions based on Ruby on rails, like Alchemy CMS. It’s difficult to assess the popularity of RoR and fully assess the framework’s chances of taking the reins from the market leaders PHP, Java, and Python, but its advantages and increasing popularity of the Ruby framework speaks for themselves.

Was this article helpful?
Page top