Rfactor: Ruby Refactoring for your loved editor

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!

20 thoughts on “Rfactor: Ruby Refactoring for your loved editor

  1. @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? 😉

  2. 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 ^.^

  3. 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)

  4. Pingback: Quora ~

Leave a comment