UPDATE: Corrected some references to RubyMATE rather than RubyMINE, because sometimes I type faster than I think…
Yesterday afternoon I had a thought.
JetBrains released a public beta of their new RubyMine IDE. Well, I thought, I’ll try it out for a day, and that’ll be a great blog post.
It seemed like a good idea at the time.
Here’s my annotated and edited Twitter feed from yesterday afternoon.
Two disclaimers: 1) I know this is an early beta, however I’ve used JetBrains stuff for year and usually their betas are pretty solid, and 2) I was a big fan of IntelliJ and basically lived in it for about four years, so I really was hoping this would work out.
To the Twitter feed:
Trying out JetBrains RubyMine. Data Point #1: Mac file dialog includes Unix directories. Data point #2: loading project takes 5 min. Sigh
Note: like NetBeans, RubyMine does a lot of pre-parsing to enable autocompletion and the like. Unlike NetBeans, JetBrains does it in the foreground. (As does their Java product, I should mention).
Update: to be fair, second load of the project was much faster, if not actually fast
Also, in another nice sign, the file dialog to open a project listed started at the Unix root — a little unusual on a Mac — and listed all the Unix directories that are normally hidden by Mac OS X. That just screams “Java program not really meant for Mac users”…
Minute 9. I finally get a text file open. I have yellow warnings on the side for plugin references it can’t find. Why can’t it find them?
RubyMine has a right margin strip that represents your entire text file, red lines indicate interpreter errors, yellow lines indicate warnings. In this case, my file had some references to methods defined in plugins, and they got yellow lines. That dramatically reduces the usefulness of the yellow lines — if there are a lot of false positives, eventually I’ll ignore them.
Minute 10: Modal popup window pops up on its own asking me if I want to add two of IDEA’s profile files to my Git repository. Um… NO!
Oy. Good side, RubyMine integrates with Git. Neutral side, when you add a file you get a dialog asking if you want it to go directly into source control. Bad side, on project load it interrupted what I was doing to put up this modal asking if it’s configuration files should be added. Annoying!
Minute 11: It’s telling me that MyController#new (instance method) overrides Object.new (class method). Not really enjoying this so far
Another problem with the introspection. In Ruby, the instance method new doesn’t shadow a class method named new (unlike Java), but RubyMine incorrectly tells me that it does.
Minute 15: no obvious way to run rake tasks from the UI
Apparently you can set up a Rake task to run in RubyMine by creating a run profile, similar how the Java product sets up different compiler runs for testing and the like. But it seems like a pain. I’d expect a Ruby IDE to read my Rakefiles and give me menu access. (TextMate doesn’t do this but it doesn’t pretend to be a full IDE, and I also kind of wish it did..)
Update: I missed this one — you can run rake tasks from the secondary mouse-button context menu. It’s not clear to me why it’s not also in the main menu.
On the plus side, the tabs for open files actually form rows so you can see more then three of them, unlike certain textmates I could name
My biggest gripe with TextMate is how it handles multiple open files. On the other hand I kept having trouble finding the open tabs in RubyMine — I think because it kept changing the number of tabs in a row as I opened files, which caused tabs to move.
At that point I stopped Twittering. Soon after which, I gave up on RubyMine, at least for the moment. Turns out that the amount of frustration I’m willing to put up with for a blog post is more on the order of a paper cut than, say, three hours at the DMV.
To be fair, I didn’t really get a chance to play with the template and refactoring features of RubyMine (which are IntelliJ’s great strengths), but overall, the help RubyMine was giving me wasn’t the help I wanted, and the help I wanted, it wasn’t giving me.
Overall, it just felt big and clunky, which is again, kind of weird, since it’s not that different from the Java version, and I used that for a very long time, and found it to be pretty elegant.
I don’t think this is a Java/Ruby issue, as such. I do think it’s because I’ve gotten used to not having my development editor take up my entire screen in three panels. While I do miss IntelliJ-style refactoring support, TextMate’s snippets and templates are way more powerful, and I think a little easier to build. Hmm… I don’t want this to turn into a better/worse thing exactly. I’ve gotten very used to TextMate, and it matches the way I like to work. At other times, in other contexts, Java IntelliJ matched how I worked. But RubyMine, right now, doesn’t


Sorry – I’m confused. Are you typing RubyMate when you mean RubyMine?
Twittering while you’re trying something out sounds like a great idea, especially if you’re a big twitterer to begin with.
The rails.vim plugin for Vim does show a menu of Rake tasks.
Oy. References to RubyMate corrected. Thanks.
Hi Noel,
Thanks for the review.
We are trying to consider every opinion to make RubyMine fit the Ruby/Rails developers needs.
True, it does have some glitches now, like the 1st project load time when it indexes all the gems installed (I bet it opens much faster after the 1st time). We are aware of this and it will be fixed of course.
You also mentioned a “help you wanted from RubyMine”. I wonder what was it you expected most from it? Would be really interesting to know.
Thanks!
-Eugene
JetBrains RubyMine Team
Hi Noel,
For Rails applications RubyMine allows to execute rake tasks from context menu – just select sub menu “rake” or use special keyboard shortcuts. In RubyMine you can use live templates – TextMate-like snippets . Also latest versions of RubyMine use different highlighting for general code inspections and type inference issues.
Against to Java Ruby is a dynamic scripting language so full support of it’s dynamic magic and Rails code conventions is a very complicated tasks. If something works in RubyMine wrong you always can submit issue at RubyMine forum or bug tracker.
Roman — I flat out missed the rake on the context menu, might I suggest that should be on the main menu somewhere.
I’ve used live templates in IntelliJ — I think the TextMate implementation is easier and more flexible.
Eugene and Roman — right now the warning system is so false-positive laded as to be worthless. Among the items that are showing up as unknown
* As far as I can tell, any local variable in an ERB partial
* All the “html”, or “js” methods in an controller respond_to block
* The “save” method of an active record object in my controller of the same name.
I’m currently looking at a RubyMine for 95 line controller that passes all of its tests — it’s not all that complex — and it has 15 false positive warnings of names it can’t find. All my files in this project have multiple false positives.
I realize that Ruby’s dynamic nature makes this kind of thing difficult, which is why I use a text editor for Ruby that doesn’t even try. I miss the extra lookup power sometimes, but I like the relative simplicity more often.
Eugene — what is “the help I want”: fair question. Deserves a more thought-out answer. I’ll get back to you.
Noel,
Thanks for your feedback it is significant for us. I’ve created a couple of issues in our bug tracker.
> * The “save” method of an active record object in my controller of the same name.
What do you mean? RubyMine allows to autocomplete/resolve “save” method in models instances.
>Modal popup window pops up on its own asking me if I want to add two of IDEA’s profile files to my Git repository. Um… NO!
You can setup RubyMine to add files silently instead of modal dialog. Also we keep our code style, etc. settings in version control system and our team uses the same settings for all members. If you don’t want to keep settings in VCS you can add such files as ignored.
Roman:
In my controller, call it RequestsController, the line @request.save was given a yellow-bar warning because RubyMine couldn’t “find save using type inference”.
Also, for what it’s worth, inside a render :update block, which is in view scope, helper methods aren’t recognized.
As far as the modal popup goes, I know that you can change the preference to have files be ignored. However, with no preferences changed, the application put a modal dialog up just as I was starting to code. I think it’s not too much to ask that an application not throw unasked for modal dialogs in front of a user except in cases of dire emergency.
[...] Last week, I wrote a blog post with my first impressions from trying out an early beta of JetBrains’ RubyMine IDE for Ruby and Rails. I ended with this slightly glib statement: [...]
[...] I tried this with the beta version back in December, and thought it had a long way to go. However, there’s been a lot of online chatter about it over the last few months. (Gregg Pollack [...]