Carlos Brando

Nome do Jogo

Um pseudo-intellisense para o Textmate

Quem nunca se confundiu com o nome dos atributos em modelos do Active Record? Principalmente em projetos maiores é comum se perder com os nomes das colunas que cada tabela do projeto possui.

Alguns programadores acabam criando o péssimo hábito de consultar os arquivos de migrations para identificar quais atributos estão disponiveis através do banco de dados em uma classe do Active Record. Além de não ser nada pragmático, essa com certeza não é a forma mais inteligente de se fazer isso.

Até então eu costumava usar uma gem chamada annotate para adicionar de forma automática comentários em meus modelos com os nomes dessas colunas. Isso já simplificava bastante.

Resolvi então avançar um pouco mais e implementar um pseudo-intelissense no Textmate que pudesse exibir em uma lista quais atributos estão disponíveis em cada modelo do Active Record em meu projeto. Veja como ficou:

A ideia é bem simples. O nome da variável é importante aqui. Como não é possível recuperar o escopo do projeto através do TextMate (se alguém tiver uma ideia de como fazer isso fale comigo), então o nome da variável informa qual é o modelo do Active Record correspondente.

Por exemplo: Se a variável se chamar user, @user, @@user ou qualquer coisa parecida então o bundle procurará pela classe com o mesmo nome, no caso User. O mesmo vale para um modelo chamado Product, onde você deverá usar variáveis com nomes como product, @product e assim por diante.

Esse recurso ainda é experimental. Ainda há muita coisa a ser feita, como melhorar o sistema de cache e resolver algumas incompatibilidades com gemsets do RVM e diferentes versões do Rails.

Para instalar, faça o download do bundle (clique aqui) e carregue-o clicando duas vezes.

Você também pode instalar diretamente pelo terminal, executando os comandos abaixo:

mkdir -p ~/Library/Application\ Support/TextMate/Bundles

cd ~/Library/Application\ Support/TextMate/Bundles

git clone git://github.com/carlosbrando/ruby-on-rails-tmbundle.git "Ruby on Rails.tmbundle"

osascript -e 'tell app "TextMate" to reload bundles'

Esse bundle é um fork do repositório do Dr. Nic, no qual eu também sou commiter. Se você já tem o bundle do drnic instalado, é melhor remove-lo antes de instalar esse novo para evitar conflitos.

O projeto se encontra no Github: http://github.com/carlosbrando/ruby-on-rails-tmbundle

Boa diversão!

Comments