Cobalt Edge

 
« Back to blog

Evaluating RubyMine IDE for Rails Development

I have spent roughly the last month using the RubyMine IDE for about 80%+ of my daily development work.  I initially grabbed it to try out the debugger on a particularly nasty problem, and then decided to give it a real evaluation.  My daily work is on DealBase, and covers the full spectrum of Rails development.  The testing was done mostly using a quad-core Mac Pro with 8GB of RAM and 30" and 24" monitors (dual monitor setup), with RubyMine running essentially full screen on the 30".  I also did some work on my MacBook Pro (Core 2 Duo, 4GB RAM).  Both machines use Snow Leopard.  My current and longtime editor has been TextMate, although I have far more time spent historically in environments like Visual C++/Studio, IDEA, a bit of time in Eclipse, a bit in Emacs, BBEdit, CodeWarrior, regularly use Vim, etc.  To date, the speed and light weight of TextMate, combined with it's slick column editing feature (that's one killer feature), have kept me from switching.  But, there may be some movement here...

I kept notes during my eval, and simply broke it down into pros and cons for me, along with a list of "other" comments.  Just going to dump these here, and then I'll tell you the outcome at the end...

Pros
  • Debugger, oh, to have a real debugger back, is quite nice.  This is what motivated me to try it to begin with.  Super easy to setup and get working to, basically no effort at all, which is much appreciated (but do need to see if can be done with Passenger setup instead of Mongrel, since we don't use Mongrel).  I've used command line ruby debugger, but once you've used a solid GUI debugger, the command line ones are just such an inferior way to work.
  • Really like how it puts the folder name in front of the file name when there are multiple files in the project with that name
  • Puts squiggles under misspellings or other code errors - quite handy.  It also puts this under the file's name in its tab, so you can quickly see which files you have open that have errors in them.
  • Hold Cmd while hovering over the name of a partial or similar, and then click to open that file
  • Word selection via double click includes the "@" on field names for Ruby code
  • It's quite smart about correlating Cucumber step statements to their definitions: it will actually show you a step statement doesn't match when that non-match is because the regex in your definition is not matching.  For example, if you had something like  "from (\w+ airport)" in your definition, but you put "from San Francisco airport", it wouldn't match, and RubyMine figures this out (I'm impressed!)
  • Having an irb or script/console REPL avail right there is quite nice.  I'm still experimenting with whether I organize my windows such that this is always at the front or not.
  • I'm just starting to get used to using them, but the "view for" and "action for" little markers in the gutter of controller/view files will take you to the corresponding view/action, a nicety.
Cons
  • TextMate bindings didn't map Cmd-Enter the way TextMate did.  Remapped it and it works fine now.
  • Doesn't work (well) with MacOS X Spaces - prevents switching to another space when you select another app
  • Sometimes grinds to a halt while it re-parses your project or what not
  • File tabs: 
    • They go to multiple rows too easily.
    • They just don't look right/good.  I'm not sure if it's because they're non-native tabs or what.
    • I understand, but don't like how the rows swap when you change to a different tabs.  You lose track of where a file is in the tabs.
  • You can't really just open up an empty, new window at whim.  I use this a lot as a scratch pad type of thing in TextMate.
  • Find in project is nowhere near as fast, or presented as usefully as Ack in Project for TextMate.  It does provide more options, such as filtering files by directory or type and so on, but the speed is generally far more important.
  • Too slow on a MacBook Pro 2.4GHz Intel Core 2 Duo with 4GB RAM - too many operations seemed to bring it (and my machine) to its knees.  Seems ok on my quad-core tower with 8GB RAM.
  • GoTo File (Cmd-T in TextMate) is odd in that it'll match to image files.  I would expect these to be automatically culled out (they are in TextMate), as I'm not looking to open some PNG file for editing.
  • Also seems to crash enough that it bothers me.  I can tolerate an occasional crash, although with TextMate I've run it for weeks on end with no crash, using it constantly.  I've had several either hangs or crashes with RubyMine in the short couple weeks I've been trying it out.
  • Can't run parallel specs/cucumber in it and get the proper processing/handling.  Our test suite is extensive enough, or well, takes long enough to run, that I really need to take advantage of multi-core machines and run this stuff in parallel.  It'd be awesome if they could integrate parallel specs.
  • "Synchronize files on frame activation" doesn't work, or doesn't do what I thought: have to tell it to reload log files from disk.  Even closing the tab for the file, and re-opening it, doesn't re-synchronize it from disk.  This really sucks when viewing log files, and is not even good for regular files - prompt me if the file changes on disk and see what I want to do, before I've spent a lot of time editing something only to realize I was editing a stale version.  
  • Has Google Chrome browser listed in Web Browsers prefs, but I can't select it or type in its location, etc.
  • Has the usual Java UI ugliness - Java file dialogs instead of native dialogs (and thus you see files and stuff you wouldn't normally see - not all bad, but ugly), just doesn't look nearly as good as a native app.
  • If I specify WebKit as my browser (which gets opened when starting to debug), a) it doesn't bring it to front, and b) it gets the URL wrong.  I see this in the address bar: "file:///Applications/RubyMine%202.0.app/bin/http:/0.0.0.0:3000"  I fared better with Chrome, but it launches a second instance of Chrome (not just a separate window, an actual separate app process).  This may be a Chrome behavior though?
  • I added a Tool for "/bin/zsh -i" to have just a regular shell in side, but the coloring and various escape codes and such don't work, and that winds up breaking enough stuff for me (that I don't want to re-jigger for this), that that's a downer.  I'd hoped that I could sort of just "live" in the IDE, like many Emacs users do.
Other 
  • Column editing is partly there, but not as good as TextMate.  If you make a column selection, and then hit paste, it doesn't replace it, it just inserts your paste at the end.  This makes it hard to say bulk rename something that's aligned vertically.
  • The refactoring bits were just ok.  This is a really hard feature in general though.  Simple refactorings I used, like renaming a method worked fine.  But, changing the name of a model class did about 1/4 of the work needed and was questionable as to whether it was an advantage over just doing it all myself.  It got all the obvious, low-hanging fruit, but it seemed to completely ignore Rails helpers and views.  It misses a bunch of things that I'm not surprised at of course, such as table names in SQL conditions (e.g. in named_scopes), model name used anywhere in JavaScript or CSS (which isn't uncommon in Rails code), and then the one that I'd like to see it do a better job on, but that is hard of course is on associations.  So, in my application, I was refactoring our "Deal" model to be "HotelDeal".  We have a "Hotel" model and it has_many deals.  Thus in the code you'd routinely see things like "hotel.deals" to reference that association.  It didn't handle any of those.  Not surprising, but starts to devalue the refactoring feature.
  • Their TextMate keybindings don't get Cmd-Enter right, but you can fix it.  You can remap the keys for "Split Line" and "Start New Line" (swap the two for example - "Start New Line" is the one you want to be Cmd-Enter).
  • I'm not quite willing to call this a con, but I find that I still prefer to use GitX to review and commit my code, instead of what's built in to RubyMine.  GitX has a nicer UI for it, just seems more straightforward, etc.  But, it is at least quite nice to have Git support right in RubyMine.  The two key changes I'd like to see that would potentially fix this for me, would be to show diffs by simply selecting one of the changed files (just like GitX does).  This is key for me because I review all code changes prior to a commit.  Second would be to show what branch I'm on.  I always work on a branch, and it's nice to see the branch as a double-check prior to committing.
  • Hoping for a TextMate theme importer (I think that's coming?), so I can import my customized Argonaut theme.

Verdict?

So, what's the upshot?  Well, I certainly won't ditch TextMate, but to my own surprise, I find I'm getting quite comfy in RubyMine.  When you need the debugger, it's really nice to have, and the other thing that's really been growing on me is their syntax checking - the squiggly lines under misspelled variable or method names, or simple syntax errors, etc.  It just saves time.  Log file viewing is clearly a problem, so I use TextMate for that (or just tail it, depending on my needs), and I don't find it to really be usable on my MacBook Pro, mainly just feels to sluggish, but I don't often use that for heavy dev work anyway.  I'd like to see it (or the debugger) work better with launching non-standard browsers.  I had had the hope that it could be like Emacs is for some folks, where I could really do darn near all my development things from inside it.  You could, but they aren't up to the same level as the separate bits yet (real zsh shell and GitX, in particular).  

My expectation is that I will buy a license, as the $99 price is worth it just to have the debugger when needed, but I might actually wind up using it regularly.  I think their pricing is actually a bit low, but it no doubt hits a sweet spot that likely motivates more folks to buy it.  My experience has been better than expected (I thought I was done with IDE's), and I'm also now eagerly awaiting Aptana's release of RadRails 3.  Their little sneak preview videos have been very promising.  But, I generally hate Eclipse (I've had plenty of time with it back when doing Java work, and always preferred IDEA, so there's my bias out in the open), so I'm wondering how that'll impact things.

Thus, I'd suggest that if you're a Rails developer, you give RubyMine a whirl.  It's really pretty impressive and I look forward to trying it a bit more, and also seeing what improvements come in the future.

Loading mentions Retweet

Comments (9)

Feb 09, 2010
malcolmcasey said...
Great post! Have you given NetBeans a try? I'm generally not a fan of Eclipse, or most IDE's in general, as I feel they're overly heavy and bloated. But NetBeans, specifically for PHP and Ruby, seem relatively lightweight.
Feb 09, 2010
I have never really liked NetBeans - although have never tried it for Ruby. My past experience is admittedly quite out of date, and was for Java. More recently thought I fired it up to try it with Clojure, but was turned off pretty quickly. It felt way too heavy handed in how it wanted me to setup a project and just to be able to move around and use it. I didn't give it near the evaluation as I did RubyMine though, although when I'm turned off by a product that quickly, it's not that likely I'd come back around to having it be a winner with further time. But I've heard definitely a fair bit of positive about it for Clojure coding (thus why I tried it).
Feb 15, 2010
sumuhan said...
Hi, This is an interesting post. I also started using Rubymine recently and I feel it is quite good .
Since you are using both a mac pro and a mac book pro for development, I would be very interested to hear how the ruby mine performs in these machines and how the two machines compare when it comes to rails development using ruby mine. Have you ever done any sort of bench marking? I would be interested to hear any comments about Rubmine performance in these two machines because I am considering buying one of these machines in the near future. I was originally considering a mac book pro but I am willing to consider the mac pro if there is a huge advantage performance wise.

Thanks

Feb 15, 2010
Sumuhan, as per my notes above, I felt RubyMine was slow on the MacBook Pro. My MBP is a bit older though. It's a 17" unit with 2.4GHz Intel Core 2 Duo, and 4GB of RAM. The ones that are currently for sale are 2.8 or 3.0GHz. They also use much faster RAM too. Combine that with the option for an SSD drive, and I imagine these will fare better, actually very well in fact. So, if you want a laptop or single machine setup or whatever, then I'd go for that, a 3.0GHz model, with an SSD drive and 4GB or more RAM.

I haven't done explicit benchmarks, just basing it on how things felt between my two machines. It was a big enough difference to notice and comment on, but again, with the newer MBP, should be fine.

I like having the Mac Pro, in that it's very fast, dedicated machine, etc., but it's also a pain to maintain two machines.

Feb 16, 2010
sumuhan said...
Thanks for the details Christopher, While as you say the newer MBP with SSD should do better, from your comments It looks like the Mac Pros are hard to beat when it comes to Rubymine performance. I am using windows at the moment and it is just too slow not just with rubymine but with ruby development in general. with Jruby it gets somewhat decent but far from fast.
Now I am wondering if I should get a new MBP or buy the big bulky MP to get the killer performance. I normally prefer a laptop and I agree juggling two machines can be messy. But if the mac pro can give such a big performance boost I think it is really worth it. Looks like I have a tough decision to make :)
Feb 16, 2010
Ya, it's a hard decision. If you travel enough, I'd go with the MBP. Most Ruby/Rails developers I know are doing all their dev on a MBP and nobody every complains of speed issues. Of course, most of them/us TextMate and not an IDE. IDE use is a small percentage of most Ruby and/or Rails developers.

If travel is rare and you have a laptop already or what not, then the MacPro offers one other potentially significant advantage: multiple monitors. The standard MacPro supports two monitors from the get-go, plus you can add more video cards if you want. I run a 30" and a 24" monitor on mine and do love that. But, the 30" is the primary, and can be run on a MBP as well, and would of course be sufficient (the 30" monitors are really so nice, totally worth it (well at least the Dell ones are reasonably priced)).

But again, I wouldn't make the decision totally around RubyMine. I think the newest/fastest MBP's will be just fine to run it, and thus if you need the laptop for travel or whatever, then that's likely a good route to go if you only have a single machine. I would *not* have a MacPro if I didn't already have a MBP.

Mar 19, 2010
BJ Clark wrote up a nice reply/rebuttal/set of notes (http://bjclark.me/2010/03/10/rubymine-a-love-story/) on RubyMine and why he loves it. It has inspired me to use it again, and I have to say I'm pretty much convinced at this point. I need to work out a solution to having zsh shells work well in it, but Cmd-B and the syntax checking, as well as a few other small things have sold me. I will be purchasing a license.
Jun 29, 2010
sumuhan said...
I finally took the plunge and ordered the macbook pro. It is the 17 inch core i7 with 4GB and SSD. Your comments were very helpful. I have finally had enough of windows. But I don't think I will be using rubymine on the mac anyttime soon as now I like Netbeans better. I think it has really improved a lot. I still have Rubymine on my current dell laptop but the only killer feature it has (compared to Netbeans) is the model dependancy diagram. My project has quite a few models and it is really helpful to see the big picture. But apart from that Netbeans seems to do almost everything else just as good if not better. I still like Rubymine but i don't think it is worth dishing out money for a Mac license (I now only have a widnows license that I use on my laptop). And Jruby performance is really better than MRI on windows. And heard that's the case with Macs too. I think maybe you should give Netbeans a try sometime.
Jun 29, 2010
sumuhan, thanks for the comment. I've tried Netbeans (as mentioned in the comments above). I actually don't like it much at all. The #1 competitor to RubyMine right now, IMHO, is Aptana Studio 3/RadRails 3 (which is still in beta/pre-release phase, but you can download it for free (it will remain free as well) and try it out). They are doing some great stuff with that. There are still a few rough edges with it, but they have really listened to the Ruby developers and are doing great stuff.

Leave a comment...

 
Got an account with one of these? Login here, or just enter your comment below.
Posterous-login    twitter