<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2" -->
<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/"
	>

<channel>
	<title>Tudo que quero saber!</title>
	<link>http://tudoquequerosaber.com</link>
	<description>Desenvolvimento Ágil</description>
	<pubDate>Wed, 16 Sep 2009 14:29:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2</generator>
	<language>en</language>
			<item>
		<title>Screencast Piloto sobre BDD - 00 - Setup</title>
		<link>http://tudoquequerosaber.com/?p=72</link>
		<comments>http://tudoquequerosaber.com/?p=72#comments</comments>
		<pubDate>Tue, 16 Jun 2009 04:28:14 +0000</pubDate>
		<dc:creator>Eduardo Fiorezi</dc:creator>
		
		<category><![CDATA[bdd]]></category>

		<category><![CDATA[screencast]]></category>

		<guid isPermaLink="false">http://tudoquequerosaber.com/?p=72</guid>
		<description><![CDATA[Olá pessoal,
Ando meio sumido pois estou trabalhando bastante.
Preparei um screencast piloto sobre tdd, espero que gostem, mas gostaria de receber elogios, críticas, comentários e sugestões para o próximo screencast.
Gostaria de ajudar a comunidade a tirar algumas dúvidas sobre o desenvolvimento com Rails e BDD.
Segue o link do video:
http://www.tudoquequerosaber.com/screencasts/EduardoFiorezi-bdd-00-setup.mov
]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal,</p>
<p>Ando meio sumido pois estou trabalhando bastante.</p>
<p>Preparei um screencast piloto sobre tdd, espero que gostem, mas gostaria de receber elogios, críticas, comentários e sugestões para o próximo screencast.<br />
Gostaria de ajudar a comunidade a tirar algumas dúvidas sobre o desenvolvimento com <a href="http://rubyonrails.org">Rails</a> e BDD.</p>
<p>Segue o link do video:<br />
<a href="http://www.tudoquequerosaber.com/screencasts/EduardoFiorezi-bdd-00-setup.mov">http://www.tudoquequerosaber.com/screencasts/EduardoFiorezi-bdd-00-setup.mov</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tudoquequerosaber.com/?feed=rss2&amp;p=72</wfw:commentRss>
<enclosure url="http://www.tudoquequerosaber.com/screencasts/EduardoFiorezi-bdd-00-setup.mov" length="101" type="video/quicktime" />
		</item>
		<item>
		<title>Referências I18n no Rails.</title>
		<link>http://tudoquequerosaber.com/?p=71</link>
		<comments>http://tudoquequerosaber.com/?p=71#comments</comments>
		<pubDate>Tue, 25 Nov 2008 12:08:57 +0000</pubDate>
		<dc:creator>Eduardo Fiorezi</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://tudoquequerosaber.com/?p=71</guid>
		<description><![CDATA[Estou migrando algumas aplicações para rails 2.2.2 e encontrei alguns probleminhas que gostaria de compartilhar para que seja fácil a migração e a utilização do I18n.
Após migrar sua aplicação coloque essas linhas no seu enviroment.rb. Descomente conforme sua necessidade.

Para tirar qualquer dúvida sobre esta funcionalidade veja este wiki: http://rails-i18n.org/wiki
O railer João Lins publicou um artigo [...]]]></description>
			<content:encoded><![CDATA[<p>Estou migrando algumas aplicações para <a href="http://www.rubyonrails.com.br">rails</a> 2.2.2 e encontrei alguns probleminhas que gostaria de compartilhar para que seja fácil a migração e a utilização do I18n.</p>
<p>Após migrar sua aplicação coloque essas linhas no seu enviroment.rb. Descomente conforme sua necessidade.</p>
<p><script src="http://gist.github.com/28893.js"></script></p>
<p>Para tirar qualquer dúvida sobre esta funcionalidade veja este wiki: <a href="http://rails-i18n.org/wiki">http://rails-i18n.org/wiki</a></p>
<p>O railer João Lins <a href="http://www.minerama.net/2008/8/8/rails-i18n-catucando">publicou um artigo</a> interessante em português sobre o assunto, mas só consegui usar a tradução dos campos dos models utilizando o seguinte código:</p>
<p><script src="http://gist.github.com/28899.js"></script></p>
<p>A diferença é a troca de <strong>human_attribute_names</strong> por <strong>attributes</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tudoquequerosaber.com/?feed=rss2&amp;p=71</wfw:commentRss>
		</item>
		<item>
		<title>Refactoring: Ruby Edition, eu quero!</title>
		<link>http://tudoquequerosaber.com/?p=70</link>
		<comments>http://tudoquequerosaber.com/?p=70#comments</comments>
		<pubDate>Tue, 23 Sep 2008 13:37:58 +0000</pubDate>
		<dc:creator>Eduardo Fiorezi</dc:creator>
		
		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[livros]]></category>

		<category><![CDATA[Refactoring]]></category>

		<category><![CDATA[TDD]]></category>

		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://tudoquequerosaber.com/?p=70</guid>
		<description><![CDATA[Jay Fields anunciou em seu blog que o livro Refactoring: Ruby Edition está a venda na loja virtual Safari. Para quem já leu a versão antiga em Java, esta obra dispensa apresentações, eu recomendo a todos que gostam de código bem escrito. 
Os autores dos livros são Jay Fields, Shane Harvie, Martin Fowler e com [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.jayfields.com">Jay Fields</a> anunciou em seu blog que o livro <a href="http://blog.jayfields.com/2008/09/refactoring-ruby-edition-available-on.html">Refactoring: Ruby Edition está a venda na loja virtual Safari</a>. Para quem já leu a versão antiga em Java, esta obra dispensa apresentações, eu recomendo a todos que gostam de código bem escrito. </p>
<p>Os autores dos livros são <a href="http://blog.jayfields.com">Jay Fields</a>, Shane Harvie, <a href="http://martinfowler.com/">Martin Fowler</a> e com a participação de <a href="http://en.wikipedia.org/wiki/Kent_Beck">Kent Beck</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tudoquequerosaber.com/?feed=rss2&amp;p=70</wfw:commentRss>
		</item>
		<item>
		<title>Rails Summit 2008 - Eu também vou!!</title>
		<link>http://tudoquequerosaber.com/?p=69</link>
		<comments>http://tudoquequerosaber.com/?p=69#comments</comments>
		<pubDate>Tue, 09 Sep 2008 14:25:48 +0000</pubDate>
		<dc:creator>Eduardo Fiorezi</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://tudoquequerosaber.com/?p=69</guid>
		<description><![CDATA[ Fala pessoal, estou passando aqui para lembrar que hoje acabam as inscrições promocionais de R$ 300,00. Estou bastante ansioso com o evento, a qualidade dos palestrantes é excelente. Será ótimo encontrar todo pessoal que acompanho silenciosamente nos últimos meses.
Até lá.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://site.locaweb.com.br/railssummit/default.asp" target="_blank" class="img"><img src="http://site.locaweb.com.br/images/locaweb/pt_BR/railssummit/banners/vouParticipar_125x125.jpg" alt="Rails Summit Latin America" title="Rails Summit Latin America" border="0" width="125" height="125"/></a> Fala pessoal, estou passando aqui para lembrar que hoje acabam as inscrições promocionais de R$ 300,00. Estou bastante ansioso com o evento, a qualidade dos palestrantes é excelente. Será ótimo encontrar todo pessoal que acompanho silenciosamente nos últimos meses.</p>
<p>Até lá.</p>
]]></content:encoded>
			<wfw:commentRss>http://tudoquequerosaber.com/?feed=rss2&amp;p=69</wfw:commentRss>
		</item>
		<item>
		<title>Você ainda usa Rails no Windows? Veja aqui seu guia definitivo para migrar para o Ubuntu.</title>
		<link>http://tudoquequerosaber.com/?p=67</link>
		<comments>http://tudoquequerosaber.com/?p=67#comments</comments>
		<pubDate>Sun, 27 Jan 2008 16:26:33 +0000</pubDate>
		<dc:creator>Eduardo Fiorezi</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[Rails]]></category>

		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://tudoquequerosaber.com/?p=67</guid>
		<description><![CDATA[Update 04/04/2008: Se encontrar algum problema ao instalar o primeiro script, retire o pacote openssl-ruby1.8.
Quem já se desligou da Microsoft seja para usar Mac ou qualquer outra distribuição Linux, sabe como é melhor estar em um ambiente livre.
Se você programa com TDD e seus testes demoram 15 segundos para serem executados, no linux eles vão [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update 04/04/2008: Se encontrar algum problema ao instalar o primeiro script, retire o pacote openssl-ruby1.8.</strong></p>
<p>Quem já se desligou da Microsoft seja para usar Mac ou qualquer outra distribuição Linux, sabe como é melhor estar em um ambiente livre.</p>
<p>Se você programa com TDD e seus testes demoram 15 segundos para serem executados, no linux eles vão demorar de 2 a 3 segundos. Alguém ainda tem tempo para perder?</p>
<p>Hoje eu uso o Mac osx mas não gosto de ver meus amigos usando o sistema do tio bill.</p>
<p>Vamos partir do princípio que você tem um HD novo e quer instalar Windows e Ubuntu.  Eu gosto de fazer 3 partições. Uma para Windows, uma para o Ubuntu e outra para guardar os arquivos independente do sistema operacional.</p>
<p>Já gravou seu cd do Ubuntu? Você vai precisar, entre no http://www.ubuntu.com/getubuntu pegue a ultima versão e queime.</p>
<ol>
<li>Instale o windows na primeira partição.</li>
<li>De um boot com o cd do Ubuntu na máquina e divirta-se enquanto ele faz todo trabalho para você, se você não sabe, durante a instalação sua conexão com a internet estará disponível, abuse do Firefox e vá ler seus feeds.</li>
<li>Você deverá formatar a terceira partição com o formato que quiser. Essa discussão é muito grande, então decida se irá usar FAT, NTFS, EXT3. Se você usar a EXT 3 seu windows não irá enxergar essa partição. Mas quem precisa de windows?</li>
</ol>
<p>Feito isso você deverá ter os 2 sistemas operacionais bootando na sua máquina.</p>
<p>Vamos agora configurar seu ambiente ruby/rails. Para isso na <a href="http://www.inovare.net">Inovare</a> desenvolvemos  alguns scripts para ajudar neste ambiente inicial.</p>
<p>Abra seu terminal no Ubuntu.</p>
<p>Utilize o comando <code>sudo passwd</code> para definir uma senha de super usuário.</p>
<p>Entre em modo super usuário digitando <code>su e apertando enter.</code></p>
<p>Agora você pode aplicar os scripts que estão no endereço http://inovare.svnrepository.com/svn/public/tools_inovare/linux/scripts/</p>
<p>Vamos utilizar apenas os 3 primeiros scripts(eles já salvaram muita dor de cabeça).</p>
<p>Vamos baixá-los e executar. Faça um comando de cada vez.</p>
<pre class="bash">wget http://inovare.svnrepository.com/svn/public/tools_inovare/linux/scripts/01_install_packages
bash 01_install_packages

wget http://inovare.svnrepository.com/svn/public/tools_inovare/linux/scripts/02_install_rubygems
bash 02_install_rubygems

wget http://inovare.svnrepository.com/svn/public/tools_inovare/linux/scripts/03_install_all_gems
ruby 03_install_all_gems</pre>
<p>Esse processo deve demorar um pouco, mas depois seu ambiente já estará 100%, com mongrel, RedCloth, sqlite3-ruby, ZenTest, rails, capistrano, termios, mocha, rmagick.</p>
<p>Espero que isso seja útil e se ocorrer algum erro no caminho ou quer dar alguma sugestão para melhorar esse processo, por favor deixe seu comentário. Não uso mais o Ubuntu mas à alguns dias precisei refazer uma instalação e usei este mesmo processo.</p>
<p>__________________ conteúdo dos arquivos:<br />
<strong>01_install_packages</strong></p>
<pre class="bash">
apt-get update

apt-get install ruby1.8-dev ruby1.8 ri1.8 rdoc1.8 irb1.8 libreadline-ruby1.8 libruby1.8 -y --force-yes

ln -s /usr/bin/ruby1.8 /usr/local/bin/ruby
ln -s /usr/bin/ri1.8 /usr/local/bin/ri
ln -s /usr/bin/rdoc1.8 /usr/local/bin/rdoc
ln -s /usr/bin/irb1.8 /usr/local/bin/irb

apt-get install mysql-server libmysql-ruby1.8 build-essential libopenssl-ruby1.8 subversion gparted unrar gnochm sqlite3 libsqlite3-dev libmagick9-dev -y --force-yes
</pre>
<p><strong><br />
02_install_rubygems</strong></p>
<pre class="bash">
wget http://rubyforge.org/frs/download.php/29548/rubygems-1.0.1.tgz -c

tar -xzvf rubygems-1.0.1.tgz

cd rubygems-1.0.1

ruby setup.rb

cd ..

ln -s /usr/bin/gem1.8 /usr/local/bin/gem
</pre>
<p><strong>03_install_all_gems</strong></p>
<pre class="bash">
#!/usr/local/bin/ruby

if `whoami` == "rootn"
  %w(mongrel RedCloth sqlite3-ruby ZenTest rails capistrano termios mocha rmagick postgres-pr).each do |gem_name|
    puts "nnInstalling gem: #{gem_name}..."
    `gem install #{gem_name}`
  end
else
  puts 'Login as ROOT to install all gems'
end
</pre>
]]></content:encoded>
			<wfw:commentRss>http://tudoquequerosaber.com/?feed=rss2&amp;p=67</wfw:commentRss>
		</item>
		<item>
		<title>Syntax Highlight nas suas views do Rails 2.0</title>
		<link>http://tudoquequerosaber.com/?p=66</link>
		<comments>http://tudoquequerosaber.com/?p=66#comments</comments>
		<pubDate>Thu, 06 Dec 2007 12:28:50 +0000</pubDate>
		<dc:creator>Eduardo Fiorezi</dc:creator>
		
		<category><![CDATA[Rails 2.0]]></category>

		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://tudoquequerosaber.com/?p=66</guid>
		<description><![CDATA[A comunidade está esperando apenas o último suspiro para a chegada do Rails 2.0.
Nos próximos dias será anunciada a versão oficial e como parece que foi tudo muito rápido. Tenho a impressão que foi ontem que comecei a aprender Ruby e Ruby on Rails.
Vamos ao que interessa. Seu textmate não está reconhecendo as views com [...]]]></description>
			<content:encoded><![CDATA[<p>A comunidade está esperando apenas o último suspiro para a chegada do Rails 2.0.</p>
<p>Nos próximos dias será anunciada a versão oficial e como parece que foi tudo muito rápido. Tenho a impressão que foi ontem que comecei a aprender Ruby e Ruby on Rails.</p>
<p>Vamos ao que interessa. Seu textmate não está reconhecendo as views com o formato action.html.erb? Achei uma <a href="http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/ac0d088768fb78f8/42e703e0211d278b?#42e703e0211d278b">thread</a> no grupo rubyonrails-talk que explica como habilitar o sintax highlight na suas novas views.</p>
<p><code><br />
No textmate entre no menu  <strong>Bundle editor</strong> depois <strong>Edit Languages</strong>.<br />
Escolha Ruby on Rails depois HTML(rails)<br />
Mude fileTypes = ( &#8216;rhtml&#8217; ); para fileTypes = ( &#8216;rhtml&#8217;, &#8216;html.erb&#8217; ); </p>
<p> *Dica do Frederick Cheung<br />
</code></p>
<p>Vocês também perceberam que o Rails 2.0 está mais limpo e rápido?</p>
]]></content:encoded>
			<wfw:commentRss>http://tudoquequerosaber.com/?feed=rss2&amp;p=66</wfw:commentRss>
		</item>
		<item>
		<title>Podcasts!!!!&#8230; Carlos Eduardo Brando&#8230; Façam suas perguntas.</title>
		<link>http://tudoquequerosaber.com/?p=65</link>
		<comments>http://tudoquequerosaber.com/?p=65#comments</comments>
		<pubDate>Sat, 01 Dec 2007 14:38:19 +0000</pubDate>
		<dc:creator>Eduardo Fiorezi</dc:creator>
		
		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[Rails]]></category>

		<category><![CDATA[PodCast]]></category>

		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://tudoquequerosaber.com/?p=65</guid>
		<description><![CDATA[Infelizmente não consegui levar para a Reject Conf SP`07 um gravador de voz que tinha em mente para gravar o podcast.
Convidei o Carlos Eduardo Brando do blog Nome do Jogo e dono do site carreiraTI para o próximo podcast.
Vamos conversar sobre seus projetos, saber como ele começou com Ruby/Rails e assuntos referentes ao mercado de [...]]]></description>
			<content:encoded><![CDATA[<p>Infelizmente não consegui levar para a Reject Conf SP`07 um gravador de voz que tinha em mente para gravar o podcast.</p>
<p>Convidei o Carlos Eduardo Brando do <a href="http://www.nomedojogo.com">blog Nome do Jogo</a> e dono do site <a href="http://www.carreirati.com/">carreiraTI</a> para o próximo podcast.</p>
<p>Vamos conversar sobre seus projetos, saber como ele começou com Ruby/Rails e assuntos referentes ao mercado de trabalho hoje.</p>
<p>Deixe sua pergunta até o dia 04/12, ela é muito bem vinda.</p>
]]></content:encoded>
			<wfw:commentRss>http://tudoquequerosaber.com/?feed=rss2&amp;p=65</wfw:commentRss>
		</item>
		<item>
		<title>Final da RejectConf SP&#8217;07 e keynote</title>
		<link>http://tudoquequerosaber.com/?p=64</link>
		<comments>http://tudoquequerosaber.com/?p=64#comments</comments>
		<pubDate>Mon, 19 Nov 2007 15:31:22 +0000</pubDate>
		<dc:creator>Eduardo Fiorezi</dc:creator>
		
		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Rails]]></category>

		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://tudoquequerosaber.com/?p=64</guid>
		<description><![CDATA[Acabou a RejectConf SP&#8217;07 e sobram elogios para todos participantes e organizadores, o ambiente estava muito colaborativos e com um ar underground como é o estilo Ruby.
Corri bastante com a minha apresentação mas espero ter passado a importância de manter um código saudável e de conhecer a estrutura do Rails para se manter DRY. 
Coloquei [...]]]></description>
			<content:encoded><![CDATA[<p>Acabou a RejectConf SP&#8217;07 e sobram elogios para todos participantes e organizadores, o ambiente estava muito colaborativos e com um ar underground como é o estilo Ruby.</p>
<p>Corri bastante com a minha apresentação mas espero ter passado a importância de manter um código saudável e de conhecer a estrutura do Rails para se manter DRY. </p>
<p>Coloquei explicações no <a href="http://www.tudoquequerosaber.com/files/refactoring_on_rails_eduardo_fiorezi.pdf">meu keynote</a>, você pode <a href="http://www.tudoquequerosaber.com/files/refactoring_on_rails_eduardo_fiorezi.pdf">baixar</a> e deixar seu feedback.</p>
<p>Pena que não consegui entrar em contato com todas as pessoas/blogueiros. Foi bom conhecer <a href="http://nomedojogo.com">Carlos Brando</a>, <a href="http://arthurgeek.net/">Arthur Geek</a>, <a href="http://dtsato.com">Danilo Sato</a>, George Guimarães, <a href="http://www.akitaonrails.com">Akita</a>, o time da <a href="http://improveit.com.br">Improve It</a> que eu só conhecia on-line  e o pessoal que esqueci o nome(deixem um comentário com o blog aqui para mim não esquecer).</p>
<p>Fiquei muito surpreso com a apresentação do Fabio Kung sobre o Jruby e como ele pode ser usado com Java, realmente está muito fácil.</p>
<p>Impressionante saber através do Carlos Villela como é o ambiente da <a href="http://www.thoughtworks.com/">thoughtworks</a> e sua estrutura enorme em cima do Ruby.</p>
<p>Todas palestras foram ótimas e valeu a pena ir e voltar no mesmo dia para Sampa. </p>
<p>Que venha a RailsConf Brasil&#8217; 08, o que acham?</p>
]]></content:encoded>
			<wfw:commentRss>http://tudoquequerosaber.com/?feed=rss2&amp;p=64</wfw:commentRss>
		</item>
		<item>
		<title>Próximo Podcast será no ritmo da Reject Conf SP&#8217;07</title>
		<link>http://tudoquequerosaber.com/?p=62</link>
		<comments>http://tudoquequerosaber.com/?p=62#comments</comments>
		<pubDate>Sun, 11 Nov 2007 23:05:14 +0000</pubDate>
		<dc:creator>Eduardo Fiorezi</dc:creator>
		
		<category><![CDATA[PodCast]]></category>

		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://tudoquequerosaber.com/?p=62</guid>
		<description><![CDATA[
Olá pessoal, estou meio sumido da produção de podcasts devido aos projetos rails que estou fazendo. Mas em alguns dias teremos a Reject Conf SP&#8217;07 que vai estar bombando com os grandes nomes da comunidade brasileira de Ruby e Ruby on Rails.
Estou buscando um aparelho portátil para poder fazer uma entrevista com toda essa galera, [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://tudoquequerosaber.com/wp-content/uploads/2007/11/591832892_b46ce844ae.jpg' title='Mic'><img src='http://tudoquequerosaber.com/wp-content/uploads/2007/11/591832892_b46ce844ae.jpg' alt='Mic' /></a></p>
<p>Olá pessoal, estou meio sumido da produção de <a href="http://podcasts.tudoquequerosaber.com">podcasts </a>devido aos projetos rails que estou fazendo. Mas em alguns dias teremos a <a href="http://akitaonrails.com/2007/11/9/aviso-importante-rejectconf-sp-07">Reject Conf SP&#8217;07</a> que vai estar bombando com os grandes nomes da comunidade brasileira de Ruby e Ruby on Rails.</p>
<p>Estou buscando um aparelho portátil para poder fazer uma entrevista com toda essa galera, fazendo algumas perguntas em cima da hora e naquele papo de barzinho.</p>
<p><strong>O que vocês gostariam de perguntar e para quem?</strong></p>
<p>Acho que vai ser uma experiência muito interessante e vai me dar um pique novo para os próximos <a href="http://podcasts.tudoquequerosaber.com">podcasts</a>.</p>
<p>ps. <a href="http://nomedojogo.com">Carlos</a> copiei seu estilo de post. Depois passa a conta do paypal.</p>
]]></content:encoded>
			<wfw:commentRss>http://tudoquequerosaber.com/?feed=rss2&amp;p=62</wfw:commentRss>
		</item>
		<item>
		<title>Extraindo um padrão para seus forms no Rails</title>
		<link>http://tudoquequerosaber.com/?p=61</link>
		<comments>http://tudoquequerosaber.com/?p=61#comments</comments>
		<pubDate>Sun, 11 Nov 2007 14:25:52 +0000</pubDate>
		<dc:creator>Eduardo Fiorezi</dc:creator>
		
		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[Refactoring]]></category>

		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://tudoquequerosaber.com/?p=61</guid>
		<description><![CDATA[Imagine que você tenha um padrão para seus forms, como o gerado pelo scaffold_resources:

&#60;% form_for&#40;:podcast, :url =&#62; podcast_path&#40;@podcast&#41;, :html =&#62; &#123; :method =&#62; :put &#125;&#41; do &#124;f&#124; %&#62;
&#160;
  &#60;p&#62;
    &#60;b&#62;Title&#60;/b&#62;&#60;br /&#62;
    &#60;%= f.text_field :title %&#62;
  &#60;/p&#62;
&#160;
  &#60;p&#62;
    &#60;b&#62;Created by&#60;/b&#62;&#60;br /&#62;
    [...]]]></description>
			<content:encoded><![CDATA[<p>Imagine que você tenha um padrão para seus forms, como o gerado pelo scaffold_resources:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby">&lt;% form_for<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:podcast</span>, <span style="color:#ff3333; font-weight:bold;">:url</span> =&gt; podcast_path<span style="color:#006600; font-weight:bold;">&#40;</span>@podcast<span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#ff3333; font-weight:bold;">:html</span> =&gt; <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:method</span> =&gt; <span style="color:#ff3333; font-weight:bold;">:put</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> |f| %&gt;
&nbsp;
  &lt;p&gt;
    &lt;b&gt;Title&lt;/b&gt;&lt;br /&gt;
    &lt;%= f.<span style="color:#9900CC;">text_field</span> <span style="color:#ff3333; font-weight:bold;">:title</span> %&gt;
  &lt;/p&gt;
&nbsp;
  &lt;p&gt;
    &lt;b&gt;Created by&lt;/b&gt;&lt;br /&gt;
    &lt;%= f.<span style="color:#9900CC;">text_field</span> <span style="color:#ff3333; font-weight:bold;">:created_by</span> %&gt;
  &lt;/p&gt;
&nbsp;
  &lt;p&gt;
    &lt;%= submit_tag <span style="color:#996600;">&quot;Update&quot;</span> %&gt;
  &lt;/p&gt;</pre></div></div>

<p>Você deve criar uma nova classe que extende de ActionView::Helpers::FormBuilder, sobrescrevendo os campos que você quer, segue logo abaixo uma implementação para todos os campos, exceto o hidden_field:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby"><span style="color:#9966CC; font-weight:bold;">class</span> DefaultFormBuilder &lt; <span style="color:#6666ff; font-weight:bold;">ActionView::Helpers::FormBuilder</span>
  <span style="color:#006600; font-weight:bold;">&#40;</span>field_helpers - %w<span style="color:#006600; font-weight:bold;">&#40;</span>hidden_field<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> |selector|
    src = &lt;&lt;-END_SRC
      <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#008000; font-style:italic;">#{selector}(field, options = {})</span>
        <span style="color:#0066ff; font-weight:bold;">@template</span>.<span style="color:#9900CC;">content_tag</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;p&quot;</span> ,
        <span style="color:#0066ff; font-weight:bold;">@template</span>.<span style="color:#9900CC;">content_tag</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;b&quot;</span> , field.<span style="color:#9900CC;">to_s</span>.<span style="color:#9900CC;">humanize</span><span style="color:#006600; font-weight:bold;">&#41;</span> + <span style="color:#996600;">&quot;&lt;br /&gt;&quot;</span> + <span style="color:#9966CC; font-weight:bold;">super</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    END_SRC
    class_eval src, <span style="color:#0000FF; font-weight:bold;">__FILE__</span>, <span style="color:#0000FF; font-weight:bold;">__LINE__</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>A aplicação é muito simples, veja:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby">&lt;% form_for<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:podcast</span>, <span style="color:#ff3333; font-weight:bold;">:url</span> =&gt; podcast_path<span style="color:#006600; font-weight:bold;">&#40;</span>@podcast<span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#ff3333; font-weight:bold;">:html</span> =&gt; <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:method</span> =&gt; <span style="color:#ff3333; font-weight:bold;">:put</span> <span style="color:#006600; font-weight:bold;">&#125;</span>,
                   <span style="color:#ff3333; font-weight:bold;">:builder</span> =&gt; DefaultFormBuilder<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> |f| %&gt;
&nbsp;
    &lt;%= f.<span style="color:#9900CC;">text_field</span> <span style="color:#ff3333; font-weight:bold;">:title</span> %&gt;
    &lt;%= f.<span style="color:#9900CC;">text_field</span> <span style="color:#ff3333; font-weight:bold;">:created_by</span> %&gt;
&nbsp;
  &lt;p&gt;
    &lt;%= submit_tag <span style="color:#996600;">&quot;Update&quot;</span> %&gt;
  &lt;/p&gt;</pre></div></div>

<p>O código fica mais limpo e padronizado. </p>
<p>Mas agora eu quero mudar o título que aparece entre a tag bold, posso então inventar uma nova propriedade para o text_field:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby">&lt;% form_for<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:podcast</span>, <span style="color:#ff3333; font-weight:bold;">:url</span> =&gt; podcast_path<span style="color:#006600; font-weight:bold;">&#40;</span>@podcast<span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#ff3333; font-weight:bold;">:html</span> =&gt; <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:method</span> =&gt; <span style="color:#ff3333; font-weight:bold;">:put</span> <span style="color:#006600; font-weight:bold;">&#125;</span>,
                   <span style="color:#ff3333; font-weight:bold;">:builder</span> =&gt; DefaultFormBuilder<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> |f| %&gt;
&nbsp;
    &lt;%= f.<span style="color:#9900CC;">text_field</span> <span style="color:#ff3333; font-weight:bold;">:title</span>,     <span style="color:#ff3333; font-weight:bold;">:label</span> =&gt; <span style="color:#996600;">&quot;Título&quot;</span> %&gt;
    &lt;%= f.<span style="color:#9900CC;">text_field</span> <span style="color:#ff3333; font-weight:bold;">:created_by</span>, <span style="color:#ff3333; font-weight:bold;">:label</span> =&gt; <span style="color:#996600;">&quot;Criado por&quot;</span> %&gt;
&nbsp;
  &lt;p&gt;
    &lt;%= submit_tag <span style="color:#996600;">&quot;Update&quot;</span> %&gt;
  &lt;/p&gt;</pre></div></div>

<p>A modificação é simples:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby"><span style="color:#9966CC; font-weight:bold;">class</span> DefaultFormBuilder &lt; <span style="color:#6666ff; font-weight:bold;">ActionView::Helpers::FormBuilder</span>
  <span style="color:#006600; font-weight:bold;">&#40;</span>field_helpers - %w<span style="color:#006600; font-weight:bold;">&#40;</span>hidden_field<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> |selector|
    src = &lt;&lt;-END_SRC
      <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#008000; font-style:italic;">#{selector}(field, options = {})</span>
        <span style="color:#0066ff; font-weight:bold;">@template</span>.<span style="color:#9900CC;">content_tag</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;p&quot;</span> ,
        <span style="color:#0066ff; font-weight:bold;">@template</span>.<span style="color:#9900CC;">content_tag</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;b&quot;</span> ,<span style="color:#006600; font-weight:bold;">&#40;</span>options<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:label</span><span style="color:#006600; font-weight:bold;">&#93;</span> || field.<span style="color:#9900CC;">to_s</span>.<span style="color:#9900CC;">humanize</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> + <span style="color:#996600;">&quot;&lt;br /&gt;&quot;</span> + <span style="color:#9966CC; font-weight:bold;">super</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    END_SRC
    class_eval src, <span style="color:#0000FF; font-weight:bold;">__FILE__</span>, <span style="color:#0000FF; font-weight:bold;">__LINE__</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Pensamento interior: &#8220;Como é bom apagar código. ;)&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://tudoquequerosaber.com/?feed=rss2&amp;p=61</wfw:commentRss>
		</item>
	</channel>
</rss>
