JetBrains’ RubyMine is the new Ruby on Rails IDE on the block. JetBrains is the same company that develops IntelliJ IDEA Java IDE, which I have used in the past with good success.

First, a bit of disclosure: I don’t like IDEs. I think they’re overkill for such a simple language as Ruby, and such a “conceptually simple” framework as Rails, but different strokes for different folks; some people really dig them.

I’ve used TextMate for the last year and a half of daily Ruby on Rails development. While it is the current editor of choice in the Rails community, there is room for improvement. TextMate 2 is rapidly turning into the poster child of vaporware now that Duke Nukem Forever has finally died a slow painful death.

So lets get down to it shall we? These are the first impressions I had while opening and playing around with a large (113 models) Rails project.

The first time you open a project in RubyMine, it scans your entire Ruby classpath; for what reason, I’m not fully sure. This process took nearly five minutes on my MacBook, and shaved off a good hunk of battery time to boot. This is definitely not ideal.

One of the main reasons I decided to try RubyMine was for its code completion feature. The code does complete, but it doesn’t actually offer methods from your Rails models when dealing with an ActiveRecord object. What’s the point of code completion if it doesn’t offer you the methods you’re going to be using the most?

Another nagging point I immediately found was that RubyMine held 400M of memory after the project was initially loaded. When I clicked on the garbage can icon to do a little garbage collecting, the memory usage increased by 15M! Memory usage during this short trial fluctuated between 175M and 450M. While writing this post the memory usage ballooned 150M up to 325M without any actual interaction. This isn’t the end of the world, it does seem to be way too much.

This is also likely the cause of the nagging unresponsiveness I experienced. Toggling the down arrow in the Rails project view to expand my list of models took four seconds. Four seconds doesn’t seem like much in the scheme of things, but it breaks the flow of development.

The Rails Project View (this is the name I’ve given to the left-hand pane that optionally shows the ‘Project’, ‘Scope’, ‘Favorites’, or ‘Rails’ view of your project) gives the developer a nice Java-style overview of your Rails project. I really dug it for the first few moments, until I noticed some odd idiosyncrasies.

The Rails Project View nests Views under Controllers, which conceptually, isn’t very far off, but it does visually break the folder structure layout we’ve all grown used to. Some of my Views were listed as “Views (Unclassified)”, and weren’t nested under Controllers, but off of the tree root its self. I guess the Rails Project View doesn’t like ActionMailer views.

One thing I do like is the integrated version control features, and kudos for including Git out of the box. JetBrains included support for Perforce, but not Mercurial or CVS which I found interesting.

I decided to try a little refactoring. I attempted to rename an existing method in one of my Models. I was really dismayed to see that the refactoring attempt doesn’t seem to actually check the scope of the method it’s trying to rename!

As you might know, I authored RESTful_ACL; of which, there is a method is_updatable_by. I attempted to refactor this method, and RubyMine renamed each separate definition for all other Models and its usage across all of my Views. Not very helpful, and if you really need to use automatic refactoring, dangerous.

I also ran the code analyzer on one of my larger Models to see where I could improve my code. It did find errors, but 97% of them had to do with the analyzer not recognizing simple has_many associations, ie:

This sucks. Analyzing good code as bad is worse than bad documentation.

Another sore point was the lack of syntax coloring for HAML. I can’t say that I expected this out of the box, but there are options for HAML in the RubyMine preferences, so why not syntax coloring?

Conclusion:
TextMate will continue to reign supreme in the Rails community. I do applaud JetBrains’ efforts with RubyMine. RubyMine is still very young (1.0.5 release at the time of this post), and it will only grow stronger and more robust. It is highly customizable to your liking, something that TextMate largely isn’t, but perhaps it doesn’t need to be considering its widespread usage. RubyMine is available for $99.

Say your thing

Name:
Email:
URL:
$0.02: