Ruby on Rails

Yesterday, I started reading through the Book of Ruby (Huw Collingbourne), which is a bible for Ruby developers.   This book focuses on the Ruby language itself.   Ruby syntax reminds me of Pascal but with significant improvements.

In terms of capability, Ruby seems roughly equal to Groovy, offering meta-programming and closures.  I feel that the jump from Java to idiomatic Ruby would be about the same as a jump from Java to Groovy.  The key is taking advantage of all of the new language features to simplify code.

Ruby is dynamically typed.  This means errors can sneak in where they would be caught at design time with a strongly-typed language like Java.  Fortunately, Rails supports a super-disciplined, test-everything philosophy, which is a good idea in any case.  This makes me believe that the actual benefits of strict typing may be overrated, so long as ample unit testing is performed.  We Java developers may have been brainwashed into thinking that strong typing is a panacea.

I was drinking from a fire hose, running through the Ruby on Rails Tutorial (Michael Hartl).  The first chapters of the book get you set up with the proper development infrastructure.

I’ve evaluated a couple of Ruby IDEs and ultimately I’ve settled on RubyMine.
RubyMine
RubyMine is crammed with features and has been working beautifully thus far.  There is also an Eclipse-based IDE called Aptana, but my sense is RubyMine is the better choice.  One drawback with RubyMine is that it is Swing-based, so it has a slightly clunky look and feel; however, the developers have done a great job making the best of things within that constraint.

The Rails tutorial has also given me a crash course in Git and GitHub.  If you have nothing better to do, you can actually visit my first application (first_app) here:

https://github.com/sotarules/first_app

Finally, this tutorial stepped me through the process of setting up Heroku, which is apparently a preferred cloud provider for Rails.

Heroku

I’m proud to say that this application is running in the cloud as expected, but it doesn’t do anything useful.  This was just an exercise to ensure that all infrastructure hurdles have been dealt with before actual development begins.

I’m planning to develop my first demonstration app next week. Stay tuned for excitement and surprises.