Listening to my friend Cedric advice and considering all the talks about RoR, a few months ago I have decided to start looking and reading about Ruby.
I haven’t done much scripting before and discovering this OO scripting language is an interesting experience. However, coming from the Java world, my expectations are different; and I am not speaking at the language level, but at the tools level.
Right from the beginning I was asking on Ruby mailing list which editors/IDEs are they using? How are they organizing/managing the sources? How is the maintainance gonna work?
Well, the first question has generated a lot of traffic, with the conclusion that you don’t need a specialized editor/IDE, just some coloring and folding and some tricks to fire irb it’s just enough. I have gonne further and asked what about big projects with thousand of sources? This almost started another flame which concluded with the fact that Ruby source code is much more less than Java code and again you don’t need an IDE for it. I tended to distrust these reasons, as I was remembering my early days with Java when doing small projects with vim was fun, but comming back after a few months was a killer, and I bought a license of Arachno Ruby. I did some research in advance and finally I have concluded that this is the kind of editor that is gonna help me out with Ruby going to the directions I liked.
Making the story short and coming back to nowadays, today I have installed a desktop wiki in Ruby: Socks. It is a very nice and small wiki offering a lot of features. However I have disliked one or two of its offerings and one that I was looking for (page tagging) was missing, so I decided it is the right moment to dig for the first time in Ruby.
The project is indeed small compaired with a Java project: 36 sources. The first bad sign for my playtime were the files with more than 1000 lines. Than immediately a question raised in my head: how am I suppose to find the source of a class/module definition? In my Eclipse IDE I have been pressing F3 for a couple of times and the navigation was done. But here? I have to use find and sed and grep, forgetting that I am on an Win machine (hint! hint! Lothar).
I will not make this entry any longer, but I finished by asking myself how can you really be more productive in Ruby? Maybe if you write all your code by your own and maintain it permanently. Otherwise I cannot see how using such a diversity of tools just to accomplish an easy task can make you more productive.
Disclaimer: I definitely don’t have the Ruby mindset yet. Hope to find it soon.
Update: a small update about Arachno Ruby: it has a Lookup Selection function that may help you while doing navigation. Thanks a lot Lothar.
4 responses to “IDE advantage (or Ruby experiences)”
I’m sure the tool support will get better as Ruby and Rails gain popularity. There is still a lot more that can be done with refactoring and finding references – keep in mind the first refactoring tool was for Smalltalk.
Also, have you tried the Ruby plugin for Eclipse? Development for it has picked up lately…
I really hope this will happen cause Ruby has a lot to offer. However, the way the editors are developed right now is not so promising and I don’t think they will be able to present many of the IDE features too soon (remember that Smalltalk was able to do this cause of the full env and virtual machine), while in Ruby we have pure editors only.
I think what will have a big influence on this would be changing the development mode from one time/one author to long time projects with multiple version support (etc.)
agreed. the big projects and necessity for better ide’s will come with time and ruby’s acceptance.
also, the ruby VM is coming with ruby 2.0…so there is hope for a smalltalk-like ruby refactoring browser.
Since you’re using Arachno Ruby, have you found a way to fire up irb at a breakpoint in order to run a command or evaluate something while the script is paused? I’ve been evaluating the IDE to see if it’ll suit my needs and I can’t for the life of me figure out how to do that (which seems like a basic feature) and I couldn’t find any helpful documentation either. Thanks.