I know we all love Ruby, and doesn’t care that much about not having auto completion/IntelliSense available.
I don’t care that much about auto completion, when coding in Ruby, myself. What I really like in Java IDEs is their refactoring support. Eclipse and IntelliJ IDEA are simply awesome in this space for Java. We still have ReSharper for Visual Studio and others, targeting other languages. Ruby has NetBeans, Aptana RadRails, RubyMine and TurboRuby/3rdRail doing a great job in this area.
But, I have this feeling that most of Ruby developers do not use IDEs (including myself). We are using good text editors, such as TextMate, Vim, Emacs and GEdit. They are good enough. Why would I need something else?
I have to admit. I really miss some refactorings while programming in Ruby. Particularly, the lack of “Extract Method” and “Extract Variable” bothers me. They aren’t even complicated, why hasn’t someone already implemented them?
So, I would like to introduce Rfactor. It is a Ruby gem, which aims to provide common and simple refactorings for Ruby code. RubyParser from Ryan Davis is being used to analyze and manipulate the source code AST, in the form of Sexps.
In theory, we should be able to use Rfactor to power any editor, adding refactoring capabilities to it. I’m targeting TextMate, but I would love to see contributions for others. The TextMate Bundle is hosted on github:
Rfactor TextMate Bundle, with installation instructions
This very first release has support only for basic “Extract Method”: inside methods and without trying to guess the method parameters and return.
Stay in touch, there is much more coming!
Interesting.
Not possible to tell from the video, so does it handle the passing of variables into extracted methods properly?
Really nice! I’m going to try it right away!
@Luke
Unfortunately not yet, but it is in the plan.
For now, it isn’t trying to guess anything (parameters and method return).
If you have some time, take a look at the github repository. Who knows, if you end up wanting to contribute some code? 😉
Great stuff. I have been looking for this ever since I first started using Ruby. Thank you.
Solid!
Having just started working for HP, I long for the familiar comfort of my Macbook with TextMate to help me out. The bundle is something I’ll definitely give a go.
@Fabio,
I’ll try and take a look if I get some time!
Luke
So then I wonder what it would take to extend that to other IDE-style features like code analysis, etc…
There’s a python library called rope that does this for python. Maybe you can steal ideas from it:
http://rope.sourceforge.net/
fabiokung-rfactor requires newgem (>= 1.1.0, runtime)
é uma dependência que não está no tutorial da página do github.
Terminei de instalar agora ^.^
Ups. First, it should be in english. So just simple translate.
”
fabiokung-rfactor requires newgem (>= 1.1.0, runtime)
its a dependency that is not at the github tutorial page.
Just Finished installing now
”
In fact, it’s missing on the tmbundle page (http://github.com/fabiokung/rfactor-tmbundle/tree/master)
In the section that starts with “If needed, here are the dependencies, individually”.
Sorry :-).
It’d be really cool if it could also extract:
– view code into helpers
– controller code into models or protected methods
(These are Rails-specific, obviously)
I’m checking out the source now and can’t wait to start using it!!
I really want rename refactoring…
looks good. I suppose there are a couple of pure ruby text editors:
shoes simple editor:
http://github.com/why/shoes/blob/71bb825efd28d3a0514c99f52e9261f17503420a/samples/simple-editor.rb
arcadia:
http://arcadia.rubyforge.org/
maybe they could use it as a plugin, too 😛
wow!
we really need this in vim 🙂