Ruby 1.9 como padrão no Textmate


English Version (Google Translate)

Olá pessoal. Post super rápido para ajudar em passar por algum “perrengue” ao definir o Ruby 1.9 para o padrão no seu Textmate.

Vamos a uma explicação rápida para quem não usa (ou não tem noção do poder do Textmate). Textmate aceita bundles e estes bundles podem ser escritos de diversas formas. Você pode ter bundles para commit no git/github, bundles para scaffold do rails, autocomplete como este do Carlos Brando e muito mais. A parte legal de criar bundles ou estender os existentes é que você pode fazer isso em Ruby.

Até aí tudo perfeito. Acontece que o Textmate por padrão usa o Ruby default do Mac e como estamos em um momento de transição é bem provável que você precise ter instalado hoje o Ruby 1.8.6 , 1.8.7, Ruby enterprise edition 1.8.7 e Ruby 1.9.1 .

Gerenciar todos estes Rubies é bem fácil através do RVM e eu não vou explicar como instá-lo pois isto já foi feito em diversos lugares como aqui e aqui ( dica: use a última versão do RVM, se ainda não atualizou, faça logo).

Resta dizer ao Textmate que agora ele vai usar o Ruby do RVM. Isto é importante pois vários bundles como o do próprio Ruby (que já vem instalado) executam código Ruby ou fazem chamadas ao binário do Ruby. Por padrão eu utilizo o REE, então vamos defini-lo como Ruby do Textmate:

Criando a variável

Basta você abrir seu Textmate e em Preferences -> Advanced -> Shell Variables e criar uma nova variável chamada TM_RUBY e apontar para o caminho do binário do REE que no RVM fica em /Users/SEU_USUARIO/.rvm/rubies/ree-1.8.7-2010.01/bin/ruby (obviamente o ree-1.8.7-2010.01 é a minha versão instalada).

Feito isto basta fechar e reabrir o Textmate e ele estará rodando com REE.

Ruby 1.9

Da forma acima você pode alterar para qualquer versão Ruby, porém com o 1.9 você terá alguns problemas.

No 1.9 foi alterada a forma de encoding dando suporte a UTF, e você normalmente faz isto definindo um comentário “mágico” com o enconding do seu script Ruby.

É bem provável que você nunca tenha atualizado o bundle do Ruby ou talvez tenha feito vários ajustes nele. E o problema vai ocorrer neste ponto, os bundles no Textmate e o próprio bundle do Ruby (dependendo da sua versão instalada) pode não definir o encoding corretamente e irá quebrar com 1.9.

O recomendado é que você atualize todos os seus bundles padrões da seguinte forma:

  
cd /Library/Application Support/TextMate/Bundles
svn up *.tmbundle
  

No meu caso eu não tinha customizado nada no bundle do Ruby (eu altero mais o do Rails) então eu apenas apaguei a minha versão da pasta ~/Library/Application Support/TextMate/Bundles e também da ~/Library/Application Support/TextMate/Pristine Copy . Caso você tenha alterado o bundle do Ruby, provavelmente suas alterações estarão na Pristine Copy.

Atualizando o Textmate

Depois de atualizar os bundles você deve atualizar seu Textmate (eu define para atualizar sempre para o cuting edge) em preferences -> software update. Marque major ou cuting-edge para ter certeza que tudo vai ser instalado com o suporte a Ruby 1.9:

Alterando o TM_RUBY

Para terminar defina seu TM_RUBY para o binário do 1.9. No meu caso ficou: /Users/daniellopes/.rvm/rubies/ruby-1.9.1-p378/bin/ruby . Não se esqueça de desmarcar a variável PATH que pode ser criada pela atualização do Textmate, caso contrário poderá ser usado alguma outra versão que esteja no seu PATH (a menos que você tenha feito um link do 1.9 para algo tipo /usr/bin).

Em seguida feche e reabra o Textmate e escreva:


  puts RUBY_DESCRIPTION

Execute o arquivo com o bundle do Ruby rodando command+r e o resultado deve imprimir a sua versão do 1.9.

Se alguém estiver passando por problemas ou sabe formas melhores por favor comente abaixo.


1 Comentário to “Ruby 1.9 como padrão no Textmate”

links of london jewelery diz:

pode não definir o encoding corretamente e irá quebrar com 1.9. ed hardy clothes


Comentário