In this article we’ll discuss some of Ruby on Rails conventions and why they are still relevant and alive today.
Rails Exists Because of Ruby
Ruby is different because it values different things, and most of those things are related to ensuring programmer happiness.
It’s interesting to see how Ruby was described in the early days: ‘The Principle of Least Surprise”
Ruby should behave how you’d expect it. This is easily described with a contrast to Python:
$ irb irb(main):001:0> exit $ irb irb(main):001:0> quit $ python >>> exit Use exit() or Ctrl-D (i.e. EOF) to exit
Ruby accepts both exit and quit to accommodate the programmer’s obvious desire to quit its interactive console. Python, on the other hand, instructs the programmer how to properly do what’s requested, even though it obviously knows what is meant (since it’s displaying the error message).
Convention over Configuration
Moving from configuration to convention gives us reusable patterns that can apply across multiple areas of your project. This allows for better abstractions and leads to better ideas.
If we can depend on a
Person class mapping to a
people table, we can use that same inflection to map an association declared as
has_many :people to look for a
Person class. The power of good conventions is that they pay dividends across different situations.
But beyond the productivity gains for experts, conventions also lower the barriers of entry for beginners. There are so many conventions in Rails that a beginner doesn’t even need to know about, but can just benefit from. It’s possible to create great applications without knowing why everything is the way it is.
Beautiful Code is Relevant
Eye pleasing code is a value unto itself and should be pursued.
So what is beautiful code? Here’s a simple example from Active Record:
class Project < ApplicationRecord belongs_to :account has_many :participants, class_name: 'Person' validates_presence_of :name end
There’s nothing fancy here, but it’s surely pretty and simple.
Ruby on Rails is more than just a framework on top of a programming language that makes you more productive. It’s a philosophy on how to build solutions for real world problems without losing the fun of it!
Hope you enjoyed this post :)