Aston J

What’s so special about Ruby on Rails?

Posted on: April 14th, 2011 by AstonJ 12 Comments

There are many reasons why Rails is special, but in order to keep things fairly short, relaxed and n00b friendly, I won’t delve too deeply into the mechanics. Instead I’ll cover the things that first drew me to the framework… and subsequently got me hooked!

The best technologies

One of the biggest draws to Rails is that it saves you a heap of trouble having to spend weeks or months researching/agonising over which technologies to adopt or methodologies to follow. If you’ve ever wanted someone to just tell you what the best are, then consider yourself told!

Here’s a list of some of them:

  • MVC – Model View Controller architecture
  • Convention over Configuration – design paradigm; spend less time configuring things!
  • DRY – Don’t Repeat Yourself
  • TDD – Test Driven Development
  • jQuery – Javascript library
  • SASS – Better CSS (variables &∓ conditionals!)
  • CoffeeScript – Nicer/easier to read/write Javascript
  • REST – REpresentational State Transfer – architecture for (stateless) networked applications

Ok, so it’s all opinion – but does it really matter so long as they are some of (if not the) best? If they’re good enough for a large number of talented devs then they’re good enough for me! I’m more than happy to bow to their superior knowledge (and if you’re smart, so should you).

It’s widely accepted that most of the default technologies, and the way Rails is set-up or goes about things is nothing short of awesomeness (it’s not called the best web framework for nothing you know!) and where you might feel the defaults are not to your taste, it’s easy to swap and change. Want to use jQuery? Fine. Want to use Prototype? That’s cool too. Prefer RSpec? No problem!

Ruby

Another big draw is the underlying language. Ruby is beautiful, powerful, elegant – and doesn’t get in your way. In fact, it’s not uncommon for people to say Ruby devs are happy devs, and they really are! The syntax is clear, constructs make sense and it all just flows naturally, making it a lovely language to work with. But make no mistake, the simple exterior harbours a very powerful interior. One that allows Ruby programmers to do things that programmers of many other languages can only dream of. Such as metaprogramming.

Another common saying is that while many come to Ruby because of Rails, they stay because of Ruby – and I couldn’t agree more. Rails wouldn’t be possible in another language, you’d get something similar, but it wouldn’t be the same – you’d be left feeling something wasn’t quite right, or that it’s almost there. Ruby is a key reason why Rails is so awe-inspiring and why so much of what it does is possible. Ruby is an all-purpose language too, so it’s not just for web apps (like say PHP).

Its creator Yukihiro “Matz” Matsumoto, has said that he is “trying to make Ruby natural, not simple” in a way that mirrors life. And many would argue he’s done just that – and then some.

The community

The Ruby community rocks. You get the feeling everyone is on the same wavelength, most Rails devs seem to use OS X and TextMate for example (even down to the same ‘theme’!) but the conventions run a lot deeper. Whether it’s indentation style or using parentheses in your method definitions or calls (they’re optional in Ruby) there’s a ‘Ruby way’ and most in the community stick to it. It’s not because Ruby users are mindless zombies mind you, it’s because we genuinely like the same things and have similarly high standards.

The most important thing however, is how passionate and helpful the community is. Good enough just isn’t good enough. That’s why test driven development (TDD) is such a big thing in the Ruby community, and why you can rest assured that your peers will always help you remain on top of your game.

As you might expect, with something so cherished at its heart the community are eager to help each other get the best out of it. Testament to this are all the resources that are not only free, but have clearly taken a lot of time and effort to put together. Here’s a quick list: tryruby.org – where you get to try (and learn) Ruby in your browser, the extremely enjoyable Rails for Zombies where the Envy Labs team take you through some gory screencasts then test your knowledge via the brain browser, the fantastic Railscasts which is nearly as old as Rails itself (!) and Rails Tutorial which is an excellent step-by-step that helps you build a twitter clone. There’s also the IRC #rubyonrails channel (irc.freenode.net) where there’s always some cheery soul willing to lend a helping hand, and the utterly brilliant Ruby Mendicant University (and Ruby Best Practises from the same person, Gregory Brown). Finally I just have to include Rails Hotline where if you get stuck and fancy talking to someone who might be able to help, you can – for free!

Pretty awesome don’t you think? And did I mention they are all free!?

If all of that isn’t enough for you (it should be, but if it isn’t…) then there’s one last thing that I find quite remarkable. I’m fairly new to Ruby, yet many leading or well known figures in the community have taken time out to speak to me. Yehuda Katz talked to me at length about learning Rails. Gregg Pollack was happy to discuss my ideas of where Rails for Zombies could lead. Ryan Bigg made the effort to get a .mobi version of his book (Rails 3 in Action) to me as he was keen on hearing my thoughts, and even DHH (the creator of Rails) has discussed totally unrelated topics via Twitter. And that’s just the people who I know are leading figures! I’ve also exchanged tweets with a number of others but won’t include them here for brevity – well apart from Russ Olsen, the author of two of my favourite Ruby books (Design Patterns in Ruby and Eloquent Ruby) who is following me on Twitter. *Faints

It’s fantastic that a large number of people high up in the community are willing to take time out for the nubes. Is there any wonder why the community is as cool as it is?

What Rails can do for you

This is probably what most of you are wondering – so what can Rails do that an off-the-shelf app/script can’t? Pretty much everything!

If you want to build a custom site, free from the constraints of a predefined app and perfectly in tune with your own vision and style, then using a framework like Rails is probably your best option. You could just skip the framework, and code everything from scratch – but why bother when so much of the hard work has already been done for you? Most of the fiddly ‘boring’ stuff is all set ready to go – you can just concentrate on the exciting stuff! And more importantly, if you’re not an expert already, Rails will teach you best practises that might otherwise take a lifetime to learn.

Additionally, and something that will interest you as you progress as a Rubyist, is that Rails allows you to use many of its components for your own non-Rails apps. Such as Active Record (the Object Relational Mapper) Active Support (Rails libraries) and even Action View (view helpers). Some of these even extend core Ruby classes such as Array, String and Hash – which is impossible in most other languages!

What will I need to learn?

Thankfully Rails teaches you a great deal about good web development, so you get to pick that up along the way – this in itself is pretty priceless. You will need to learn Ruby and Rails, though (and I assume you already have a working knowledge of HTML and CSS). You could get by with a little Ruby, as Rails does simplify many things – but learning Ruby is the only way to become a Rails Ninja, because Rails is Ruby, underneath it all.

If I’ve wet your appetite and you’re eager to learn but don’t know where to start or how to go about it, keep an eye out for a future blog post (Edit: the future is now! Link added…) where I will be doing a ‘Best way to learn Ruby & Rails‘ feature. In the meantime, here’s some quick tips:

  • If you’re new to programming go through Learn to Program by Chris Pine – a lovely introduction to OOP and Ruby.
  • Then do the excellent Kevin Skoglund, Ruby, and Ruby on Rails 3 courses over at Lynda.com – they are in perfect 5 to 10 minute clips and Kevin really knows his stuff… and knows how to get you to know it!
  • After that check out David A. Black’s The Well Grounded Rubyist – one of the best Ruby books I have read to date. David is a real-life teacher, and it shows. He takes nothing for granted and walks you through every bit of code in the book so you never feel like giving up. This book really is a gem and I’m sure you’ll love it every bit as much as I do.

There’s more of course, but that’s enough to get you started. If you already know HTML and a bit of CSS, you’re ready to jump right in. So dive in and unleash your creations onto the world – faster, better, and while enjoying, yes enjoying, yourself along the way too.

Related post: What’s Special About Ruby?

Tags: ,
  • http://skillbonsai.com Andrew Cox

    Great stuff! I often find myself trying to explain to people (managers, coworkers) why we should use Rails and I think this article nails it.

    I’m also interested in your teaser for the “Best way to learn Ruby & Rails”. I’m working on a new site, http://skillbonsai.com, that should help to answer that question. SkillBonsai will be a set of community-created skill trees (think MMORPGs) that guide you through the process of learning and mastering skills. My hope is that SkillBonsai becomes the first place people go when they wonder, “What’s the best way to learn X”.

    As a Rails developer myself, a skill tree for learning Rails will be one of the first trees available. Of course, now it will need to include nodes on learning CoffeeScript and SASS :)

    If you’d be interested in helping flesh out a skill tree for Rails, that’d be awesome. Otherwise I will look forward to reading your article about your perspective on learning Rails.

  • James Gifford

    I’m a relative newbie but already I can see that ruby/rails was the right path to take. Good post, and useful links too :)

  • http://excid3.com Chris Oliver

    I honestly think that the best things about Rails have been the incredibly awesome community, and the minimalist approach the framework takes upon getting your idea to product as fast as possible. That is what drew me to it in the first place.

    After getting a job with Rails, I had a very hard time understanding the code and what was going on. We were working on a fairly awful codebase, but after reading Metaprogramming Ruby ( http://pragprog.com/titles/ppmetr/metaprogramming-ruby ) I gained a serious appreciation for the language and framework and have fallen in love. Couldn’t recommend that book more.

    Keep up the good work Aston!

  • AstonJ

    Andrew – Sounds fantastic Andrew, I’m sure it will come in handy for a lot of people (and I bet I will use it lots myself!). I’ve updated the article with a mention to SkillBonsai and have signed up for the beta – good luck with the project :)

    Chris – I remember buying Metaprogramming Ruby after you recommended it! Now that I have finished Agile Web Development with Rails I may get into it next – although i’ve started the Pragmatic Guide to Javascript (just to see what it’s like) and am currently doing Rails Best Practises @codeschool

    James – thanks! Glad you’ve found it useful :)

  • Jason Carpentier

    Chris is right the community is absolutely one of the best things I’ve discovered about Rails. It’s so easy to get help as a noob when you’re stuck and the top dogs aren’t afraid to seek help either. It’s great to get reminded every now and then that you don’t have to know everything and it’s okay to ask for help.

  • http://sml.me Malcolm Goodman

    I picked up The Well-Grounded Rubyist today and started reading it. Truly an excellent book; good suggestions. I really like your background image too, it adds a unique touch to your website while also letting the viewers know what you are about.

  • AstonJ

    Jason – I agree, think it’s great that you get everyone asking for help when they need it.

    Malcom – I’m glad you agree about TWGR, an awesome book! Thanks for the comments about the background image, it’s actually one of two that is on random rotation. I was going to add another to represent the other things that interest me too – and basically have them act as a sort of ‘about me’ page. Welcome to the Ruby community!

  • http://Www.Calmera.nl Bongoman

    Aston
    Great post. I’m trying to convince a friend of mine to start with rails. This post will help me.

  • http://www.nelsonic.org Jerry Nelson

    Gentlemen!
    Please write a new intro paragraph for the Wikipedia’s Ruby article. Look at the much better Intro to the RAILS article for inspiration. Do it however you wish, but try to be concrete along the way. You could say, although very general in capabilities, Ruby is a favored language for Website development where it is used to handle X and create Y (try to name things any Web user might have noticed). Earlier languages (name a couple) to do these things (for example, what?) but had several functional limitations (hard to accomplish J, keep track of K, coordinate with L, I don’t know) or had freedoms and ambiguities that could lead to bad code. //// Thanks. Many of these are generic, eternal issues in programming language design and programming communities. The Wiki intro tells me little — there are persistent problems, persistent imperatives for solutions, the current solutions are good. Sure. But what is the program used for? Where did Ruby show victory through strength over particular weaknesses of prior approaches? //// Always easy to suggest work for others, sorry. But it is a service to the community to have a good kick-off intro the the Wikipedia article. You might put your entire “Suggested New Intro Paragraph” on the talk page where it won’t go away. Then install it a month later.
    –jerry

  • Giedrius

    Inspiring! I’ve started learning Ruby and rails last year as well and I don’t regret so far!

  • Ibrahim

    I’ve recently jumped in to learning ruby with try ruby. I’m completely new to programming but wanted to take on learning a language as a personal enrichment project. I feel a long way away away from actually putting anything together but I look forward to the journey. I came across this post and I feel it affirmed my choice in tackling ruby, the community being a big reason. I hopei can check back in for tips and pointers. Thanks a bunch.