Ruby On Rails IDE Showdown

railsHello, I’m Mark Chase, a Web developer who has recently joined the team at Edison Nation. You may not know it, but Edison Nation is built on a platform known as Ruby on Rails, a leading-edge contender to other popular Web frameworks such as  PHP Zend, Java on Struts, and Microsoft’s MVC.NET. This blog post will review a few of the major Integrated Development Environments (IDEs) for Ruby development, so unless you are a Web developer yourself, this might get a little technical. Otherwise, read on to learn more!

A lot of Ruby developers prefer to code with advanced text editors such as TextMate, TextPad, or E-TextEditor, but having an extensive background in Java and Microsoft .NET myself, I prefer to use a full-featured IDE (Integrated Development Environment). So I finally decided to sit down and find the best IDE for Ruby development that would suit my needs as a recovering Microsoft VisualStudio user.

There are currently 3 great Ruby on Rails (RoR) IDEs: Netbeans 6.7.1 with ROR plugin, Aptana 2.0 (or Eclipse w/ RadRails 2.0), and RubyMine 2.0. This evaluation was performed on a 2.13 Ghz Core 2 Duo MacBook (OS 10.6.2, 64-bit) with 4 GB of DDR2 800 RAM.

Here’s the breakdown:

Feature

NetBeans 6.7.1

Eclipse 3.5 / RadRails

RubyMine 2.0

Cost

Free

Free

$99 (free for open source)

32 or 64 bit

both

both

both

Ruby On Rails

Plugin: RoR 0.105.2

Plugin: RadRails 2.0

Built-in

Active Development

Moderately Active

Very Active

Very Active

Platform Auto Updating

Yes

Yes

Yes

Development Aids

NetBeans 6.7.1

Eclipse 3.5 / RadRails

RubyMine 2.0

Ease-of-Use for RoR

3-stars

3-stars

4-stars

Customizability

2-stars

4-stars

4-stars

Look-and-Feel

3-stars

4-stars

4-stars

Syntax Highlighting

4-stars

4-stars

4-stars

On-the-fly Error Detection

1-star

3-stars

3-stars

Error Correction Suggestion

1-star

3-stars

3-stars

Autocomplete (IntelliSense)

3-stars (cntl-space)

3-stars (cntl-space)

4-stars (automatic)

Autocomplete Responsiveness

2-stars

4-stars

4-stars

Go-To Declaration / Definition

3-stars

2-stars

4-stars

Step-through debugging

Yes

Yes

Yes

RHTML Support

3-stars

3-stars

4-stars

HAML Support

2-stars (as plugin)

3-stars

4-stars

Auto-spell Checking

No

Yes

Yes

Ruby Doc Integration

Yes

Yes

Yes

Class Object Navigation

3-stars

3-stars

3-stars

Refactoring

NetBeans 6.7.1

Eclipse 3.5 / RadRails

RubyMine 2.0

Rename

Yes

Yes

Yes

Convert Variable to Field

No

Yes

No

Encapsulate Field

No

Yes

No

Move Field

No

Yes

Yes

Move Method

No

Yes

Yes

Rails

NetBeans 6.7.1

Eclipse 3.5 / RadRails

RubyMine 2.0

Server Integration

Mongrel or WEBrick

Mongrel

Mongrel

Create Rails Project Wizard

4-stars

4-stars

4-stars

Import Existing Rails Project

4-stars

4-stars

4-stars

Rails Generator

3-stars

Could not find…

4-stars

Rake Tasks

DB Migrate only

All

All

Auto Testing

Ruby Unit Test

All

All

Visibility to Heap

No

No

Yes

Model Dependency Diagram

No

No

Yes

Insert Code Template

No

No

Yes

Version Control

NetBeans 6.7.1

Eclipse 3.5 / RadRails

RubyMine 2.0

GIT Integration

2-star (nbgit plug-in)

3-star (EGit plug-in)

4-star (built-in)

Subversion

Present but not tested

Present but not tested

Present but not tested

CVS

Present but not tested

Present but not tested

Present but not tested

System Resources

NetBeans 6.7.1

Eclipse 3.5 / RadRails

RubyMine 2.0

Total Size

220 MB

285 MB

116 MB

Program Startup

25 seconds

15 seconds

22 seconds

Memory

300 – 500 MB

400 – 530 MB

350 – 1500 MB

Threads

25 – 35

50 – 60

55 – 65

Stability

Occasional Crash

No Crashes during test

No Crashes during test

Netbeans 6.7.1 Summary

Netbeans is a good choice if you’re already familiar with Netbeans. All you need to do is either get the latest version of Netbeans that comes with Ruby already, or add the Ruby on Rails plugin to your existing Netbeans installation. If you want GIT and HAML support, you’ll need to add those plugins separately as well.

Netbeans with ROR has most features that you’ll need for ROR development, but it is all fairly mediocre (i.e., it’s a jack-of-all-trades, but master-of-none). Netbeans with ROR has syntactical highlighting and coloring, basic autocomplete (though it’s not too smart), step-through debugging, and integrated RDoc support. It also has Rake, but only for database rake commands (as far as I can tell) and Auto Testing, but only for Unit Tests. Basically, it has everything you’ll need, just not to any impressive extent.

The HAML plugin was not very good. In fact, it flagged various end / (slashes) as bad code. Because of this, and the fact that it really didn’t add much other than syntactical coloring, I had to disable it. The GIT plugin (nbgit) works fairly well, but there’s no frills, bells, or whistles to speak of. In fact, I found myself using git on the command line more than the GIT plugin with Netbeans.

Netbeans crashed or simply “froze” a few times while I was using it. I do not know why, perhaps it was just a fluke on my system – who knows.

The final bit to consider this this: Netbeans is sponsored by Sun, and given the resent acquisition of Sun by Oracle no one is quite sure what the long-term future of Netbeans will be. Just food for thought.

Eclipse 3.5 w/ RadRails Summary

Eclipse w/ RadRails is a good choice if you’re already familiar with Eclipse. For this I tested Eclipse with RadRails rather than the stand-alone Aptana. First I download Eclipse for PHP (under the basic assumption that the PHP version of Eclipse will be the most popular one for web developers) then I added the RadRails plugin. I also added the EGit plugin for GIT support.

Eclipse with RadRails is much more configurable than Netbeans, and pleasantly so. It seems to have more Rails development features than Netbeans, but there are some startling omissions. Primarily, I could not find the script generator (generate model, generate controller, generate model, etc.). This could be an oversight on my part, but nevertheless I had to resort to running script/generate from the command line.

Eclipse with RadRails had the best refactoring support of the 3 IDEs I reviewed, but I really do not find myself using refactoring that often so I did not test it to any real extent. It also had all Rake tasks and all Testing scripts, as far as I could tell. Eclipse with RadRails also has a built in spell checker, has good HAML support, and autocomplete was very responsive. For whatever reason, I had some difficulty making Eclipse jump to certain method declaration, but not all – most of the time it worked, but occasionally it just couldn’t jump to (or otherwise find) a declaration.

In short, Eclipse w/ RadRails is a pretty good choice if you are already familiar with Eclipse. Overall, it is a little better and more feature-full than Netbeans with ROR. But it really comes down to interface preferences: do you like the Netbeans interface better or the Eclipse interface better? I personally think the Eclipse interface looks more modern and polished, but that is a very subjective area.

RubyMine 2.0 Summary

RubyMine 2.0 is a good choice for Ruby development. However, the fact that it is not free and open source and costs $99 is a big disappointment (then again, Microsoft VisualStudio costs a whopping $799 just to put this into perspective). Of the 3 IDEs reviewed here, RubyMine seems to be the most “natural” for Ruby and Ruby on Rails development – probably because that is was it was specifically designed for, rather than beginning a plugin. On the other hand, RubyMine is a huge CPU and memory hog. Yet, in spite of this, RubyMine was always very responsive and did not seem to get bogged down. Development of RubyMine is very active, and hopefully will continue to be very active.

RubyMine is highly configurable, perhaps on par with Eclipse with RadRails. Despite how new it is, it seems to be very mature and polished, over all. Its refactoring support is not as complete as Eclipse with RadRails, but it does support all Rake tasks. RubyMine also adds several features that neither Netbeans with ROR nor Eclipse with RadRails support: primarily the ability to see the size of the Heap, the ability to generate a model dependency diagram, and the ability to insert code templates (such as a template for an “if statement”). Auto-testing can be run from the Rake sub-menu, and is extensively configurable. One more important item of note: I thoroughly enjoyed not having to hit control-space to popup autocomplete after typing the period at the end of an object or class — this saves time and keystrokes, and gives a more natural flow to using the autocomplete feature.

RubyMines does have some quirks, however. For whatever reason, RubyMine was not able to detect the App object, which among other things stores application constants from the config.yml. RubyMine would report “Could not find ‘App'” as a warning, and there was no autocomplete available for the App object as a result – this is extremely annoying, since we use config.yml for lots of configuration items. RubyMine also flagged several “require” statements with warnings, such as reporting “no such file to load” for “require ‘digest/sha1′”. It also has a built-in CSS editor that attempts to intelligently detect unused css classes, but it detected virtually all css classes as “unused” even if they really are actually used (fortunately, you can turn off that check in the preferences). RubyMine also does not seem to integrate with the AASM Gem (Active State Machine) when it is used on a model, but then again neither does anyone else (I had just hopped that RubyMine was smart enough, but I guess the answer is “not yet”). It also has difficulty with autocomplete for the Paginate Gem, and perhaps other as well (AASM and the Paginate Gems were the only ones I tested).

Overall, RubyMine is better than both Netbeans with ROR and Eclipse with RadRails, and if it was free I would say it was the #1 choice. However, since it is does cost around $99 the decision basically comes down to this: is $99 worth the extra features and somewhat more “natural” Rails development environment? That’s a call you’ll have to make for yourself — I’ve decided it’s worth it for me.

Note: as RubyMine developer Roman Chernyatchik pointed out, RubyMine is free for the purposes of developing open source projects, but to get this you must apply, and the requirements are pretty strict.

This concludes my review of the three major Ruby on Rails IDEs. I hope you found it useful!

2 Comments Ruby On Rails IDE Showdown

  1. Roman.Chernyatchik

    Hi, nice review! As a RubyMine developer I want to add some information. You refactoring section is too short I suggest to add: extract method, introduce variable/constant/field, inline variable, push members down, pull members up, extract class, extract module (at least RubyMine 2.0 supports all of them). Also RubyMine rename refactoring understands rails specific calls (e.g., url_for, render, redirect, etc.) thus rename view/action refactoring will update corresponding parameters in rails specific calls. Find usages and smart autocompletion is also available for arguments of rails specific calls. RubyMine also provides autocompletion/resolve of cucumber steps definitions in *.feature files.

    As for the licenses we provide free licenses for open source projects.

  2. mchase

    Thank you Roman. As a core RubyMine developer, you certainly know best. I did update the price to reflect the fact that RubyMine is free for the purposes of developing an open source product. The other items you have pointed out are deeper into the nitty-gritty details than this little overview was meant to cover — I could have gone deeper on the review for all 3 products, but chose to limit the comparison at a somewhat higher level.

Comments are closed.