June 12, 2009 | In: Ruby
Ruby + irb + utility-belt + gedit = :)
Em setembro de 2008, Akita fez um post interessante sobre o utility-belt, uma gem
que adiciona várias funcionalidades ao irb (é algo parecido como dar Red Bull para o irb). Entre as várias funcionalidades temos:
- acionar o Vi ou o TextMate a partir do irb, permitindo que você escreva ou cole um código rapidamente, salve, feche o editor e já possa testar no irb, sem precisar criar arquivo e salvar em diretório.
- visualizar um histórico de comandos digitando “h”
- abrir o histórico no TextMate ou Vi usando hvi ou hmate
- assista ao screencast do Akita para ver o funcionamento
Até aí tudo bem, mas o grande problema é que eu uso ubuntu com gedit para escrever códigos ruby. E o utility-belt não possui métodos específicos para acionar o gedit. O help do utility belt dá a opção edit_interactively(:gedit), mas é claro que eu não poderia me contentar com esse método, eu queria que funcionasse da mesma forma que funciona para o Vi ou TextMate.
Pesquisando um pouco, achei um artigo que mostra como abrir o editor nano do linux através do irb, extendendo o utility-belt. A partir dele eu fiz algumas modificações no arquivo .irbrc que vocês verão na sequência do Post.
A primeira etapa é instalar o utility-belt:
git clone git://github.com/akitaonrails/utility-belt.git cd utility-belt gem build utility_belt.gemspec sudo gem install utility_belt-1.0.12.gem
Agora é só editar o arquivo .irbrc no home do seu sistema e acrescentar as seguintes linhas:
require 'rubygems'
require 'utility_belt'
module InteractiveEditing
def gedit
edit_interactively(:gedit)
end
end
class Object
def history_to_gedit
handling_jruby_bug do
file = Tempfile.new("gedit_tempfile")
get_lines(0..(Readline::HISTORY.size - 1)).each do |line|
file << "#{line}\n"
end
file.close
system("gedit #{file.path}")
end
end
alias :hgedit :history_to_gedit
end
UtilityBelt.equip(:all)
Depois disso é só salvar e partir para a execução!
Agora você pode usar o comando gedit direto do irb e também abrir o histórico no gedit usando hgedit ou history_to_gedit. Se quiser entender um pouco mais sobre os códigos leia os arquivos: interactive_editor.rb e command_history.rb na pasta: utility-belt/lib/utility_belt$
Para quem não utiliza o gedit, nem o Vi, nem o TextMate, é só modificar esse código para o seu editor favorito!
Fico por aqui.
Obs.:O primeiro teste que eu fiz não funcionou, pois estava faltando uma dependência no meu sistema. Era o xsel que é responsável para fazer cópias de texto do shell para clipboard. Resolvi esse problema usando: sudo apt-get install xsel
Para saber mais sobre o xsel acesse aqui.
1 Response to Ruby + irb + utility-belt + gedit = :)
silfar
August 14th, 2009 at 12:31 pm
Era exatamente o que eu procurarva, mas aqui nem o gedit nem o vim estão funcinando:
silfar@silfar-nix:~$ irb
>> vi
NameError: undefined local variable or method `vi’ for main:Object
from (irb):1
>> gedit
NameError: undefined local variable or method `gedit’ for main:Object
from (irb):2
>>
pode me ajudar ?