<?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>jésus lopes &#187; banco de dados</title>
	<atom:link href="http://jlopes.zigotto.com.br/tag/banco-de-dados/feed" rel="self" type="application/rss+xml" />
	<link>http://jlopes.zigotto.com.br</link>
	<description>@zigotto &#124; ruby &#124; rails &#124; desenvolvimento &#124; software</description>
	<lastBuildDate>Sat, 01 May 2010 19:46:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Populando banco de dados usando a gem Populator</title>
		<link>http://jlopes.zigotto.com.br/gems/populando-banco-de-dados-usando-a-gem-populator</link>
		<comments>http://jlopes.zigotto.com.br/gems/populando-banco-de-dados-usando-a-gem-populator#comments</comments>
		<pubDate>Sun, 14 Jun 2009 02:53:56 +0000</pubDate>
		<dc:creator>Jésus Lopes</dc:creator>
				<category><![CDATA[dicas]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[faker]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[populator]]></category>
		<category><![CDATA[task]]></category>

		<guid isPermaLink="false">http://jlopes.zigotto.com.br/?p=26</guid>
		<description><![CDATA[É preciso demonstrar uma funcionalidade da aplicação para o cliente, mas para isso é necessário realizar diversos cadastros e gerar informações na base de dados. Dependendo da quantidade de registros, fazer isso manualmente acaba ficando muito chato além de consumir um longo tempo.
Procurando uma maneira de automatizar esse processo, encontrei a gem Populator que facilita [...]]]></description>
			<content:encoded><![CDATA[<p>É preciso demonstrar uma funcionalidade da aplicação para o cliente, mas para isso é necessário realizar diversos cadastros e gerar informações na base de dados. Dependendo da quantidade de registros, fazer isso manualmente acaba ficando muito chato além de consumir um longo tempo.</p>
<p>Procurando uma maneira de automatizar esse processo, encontrei a gem <a href="http://populator.rubyforge.org/" target="_blank">Populator</a> que facilita e muito esse trabalho.</p>
<p><strong>Como Usar</strong>:</p>
<p>Primeiro instale a gem</p>
<pre><code>sudo gem install populator</code></pre>
<p>Após instalar, no console já podemos fazer algo como:</p>
<pre class="bash"><code>&gt;&gt; require <span class="st0">'populator'</span>
=&gt; <span class="br0">&#91;</span><span class="br0">&#93;</span>
&gt;&gt; Category.count
=&gt; <span class="nu0">0</span>
&gt;&gt; Category.populate<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> |category| category.name = Populator.words<span class="br0">&#40;</span><span class="nu0">1</span>..<span class="nu0">3</span><span class="br0">&#41;</span>.titleize <span class="br0">&#125;</span>
=&gt; <span class="br0">&#123;</span><span class="br0">&#125;</span>
&gt;&gt; Category.count
=&gt; <span class="nu0">10</span>
&gt;&gt; Category.first
=&gt; <span class="re3">#&lt;Category id: <span class="nu0">1</span>, name: </span><span class="st0">&quot;Fuga Debitis Temporibus&quot;</span>, created_at: <span class="st0">&quot;2009-06-13 14:17:24&quot;</span>, updated_at: <span class="st0">&quot;2009-06-13 14:17:24&quot;</span>&gt;
&gt;&gt;</code></pre>
<p>Existem alguns metodos que podemos usar para gerar alguns dados como:</p>
<pre class="rails"><code>Populator.<span class="me1">words</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="br0">&#41;</span> <span class="co1"># gera 5 palavras aleatoriamente e insere um espaço entre elas</span>
Populator.<span class="me1">words</span><span class="br0">&#40;</span><span class="nu0">1</span>..<span class="nu0">3</span><span class="br0">&#41;</span> <span class="co1"># gera entre uma e três palavras aleatoriamente</span>
Populator.<span class="me1">sentences</span><span class="br0">&#40;</span><span class="nu0">3</span><span class="br0">&#41;</span> <span class="co1"># gera 3 frases</span>
Populator.<span class="me1">paragraphs</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span> <span class="co1"># gera 2 paragrafos</span></code></pre>
<p>Mas dependendo to tamanho de nosso model, ficar digitando tudo isso pelo console acaba dando muito trabalho também. Vamos melhorar isso!</p>
<p>Crie um novo arquivo em <strong>lib/tasks/populate.rake</strong> e crie a seguinte tarefa:</p>
<pre class="rails"><code>namespace <span class="re3">:db</span> <span class="kw1">do</span>
  desc <span class="st0">&quot;Popula base de dados&quot;</span>
  task <span class="re3">:populate</span> =&gt; <span class="re3">:environment</span> <span class="kw1">do</span>
&nbsp;
    <span class="kw3">require</span> <span class="st0">'populator'</span>
&nbsp;
    Category.<span class="me1">populate</span> <span class="nu0">30</span> <span class="kw1">do</span> |category|
      category.<span class="me1">name</span> = Populator.<span class="me1">words</span><span class="br0">&#40;</span><span class="nu0">1</span>..<span class="nu0">3</span><span class="br0">&#41;</span>.<span class="me1">titleize</span>
    <span class="kw1">end</span>
&nbsp;
  <span class="kw1">end</span>
<span class="kw1">end</span></code></pre>
<p>Agora dentro do diretório da aplicação, basta rodar a tarefa:</p>
<pre><code> rake db:populate </code></pre>
<p>Bem melhor <img src='http://jlopes.zigotto.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Podemos melhorar ainda mais este processo e deixar ele mais completo utilizando a gem <a href="http://faker.rubyforge.org/" target="_blank">Faker</a> que gera dados como nome, telefone, endereço, e-mail e pode ser usada junto com a <a href="http://populator.rubyforge.org/" target="_blank">Populator</a>.</p>
<p>Vale a pena assistir a <a href="http://railscasts.com/episodes/126-populating-a-database" target="_blank">este</a> Railscast onde é demonstrado como utilizar as duas gems.</p>
<p>É isso ai! <img src='http://jlopes.zigotto.com.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://jlopes.zigotto.com.br/gems/populando-banco-de-dados-usando-a-gem-populator/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
