<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Valério Farias &#187; utility-belt</title>
	<atom:link href="http://valeriofarias.com/tag/utility-belt/feed/" rel="self" type="application/rss+xml" />
	<link>http://valeriofarias.com</link>
	<description>(Tecnologia + Negócios) = :)</description>
	<lastBuildDate>Tue, 29 Mar 2011 21:07:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ruby + irb + utility-belt + gedit = :)</title>
		<link>http://valeriofarias.com/ruby-irb-utility-belt-gedit/</link>
		<comments>http://valeriofarias.com/ruby-irb-utility-belt-gedit/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 02:25:31 +0000</pubDate>
		<dc:creator>Valrio Farias</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[gedit]]></category>
		<category><![CDATA[irb]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[utility-belt]]></category>

		<guid isPermaLink="false">http://geyserway.com/?p=105</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Em setembro de 2008, Akita fez um <a href="http://www.akitaonrails.com/2008/9/21/ruby-irb-utility-belt">post interessante sobre o utility-belt</a>, uma gem<br />
que adiciona várias funcionalidades ao irb (é algo parecido como dar Red Bull para o irb). Entre as várias funcionalidades temos:</p>
<ul>
<li> 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.</li>
<li> visualizar um histórico de comandos digitando &#8220;h&#8221;</li>
<li> abrir o histórico no TextMate ou Vi usando hvi ou hmate</li>
<li> assista ao <a href="http://www.akitaonrails.com/2008/9/21/ruby-irb-utility-belt">screencast</a> do Akita para ver o funcionamento</li>
</ul>
<p>Até aí tudo bem, mas o grande problema é que eu uso <strong>ubuntu</strong> com <strong>gedit</strong> 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.</p>
<p>Pesquisando um pouco, achei um artigo que mostra como  <a href="http://www.vanutsteen.nl/2008/05/12/interactiveinline-editor-in-irb/">abrir o editor nano do linux através do irb</a>, 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.</p>
<p>A primeira etapa é instalar o utility-belt:</p>
<pre class="brush: ruby; ">
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
</pre>
<p>Agora é só editar o arquivo .irbrc no home do seu sistema e acrescentar as seguintes linhas:</p>
<pre class="brush: ruby; ">
require &#039;rubygems&#039;
require &#039;utility_belt&#039;

module InteractiveEditing
   def gedit
      edit_interactively(:gedit)
   end
end

class Object
   def history_to_gedit
      handling_jruby_bug do
         file = Tempfile.new(&quot;gedit_tempfile&quot;)
         get_lines(0..(Readline::HISTORY.size - 1)).each do |line|
            file &lt;&lt; &quot;#{line}\n&quot;
         end
         file.close
         system(&quot;gedit #{file.path}&quot;)
      end
   end
   alias :hgedit :history_to_gedit
end

UtilityBelt.equip(:all)
</pre>
<p>Depois disso é só salvar e partir para a execução!</p>
<p>Agora você pode usar o comando <strong>gedit</strong> direto do irb e também abrir o histórico no gedit usando <strong>hgedit</strong> ou <strong>history_to_gedit</strong>. 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$</p>
<p>Para quem não utiliza o gedit, nem o Vi, nem o TextMate,  é só modificar esse código para o seu editor favorito!</p>
<p>Fico por aqui.</p>
<blockquote><p>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: <strong>sudo apt-get install xsel</strong><br />
Para saber mais sobre o xsel acesse <a href="http://www.pgrs.net/2008/1/11/command-line-clipboard-access">aqui</a>.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/ruby-irb-utility-belt-gedit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

