<?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>Blog da Voraz &#187; Ruby</title>
	<atom:link href="http://blog.voraz.com.br/category/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.voraz.com.br</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Tue, 21 Dec 2010 15:37:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Instalando gem RMagick no Ubuntu 9.10</title>
		<link>http://blog.voraz.com.br/instalando-gem-rmagick-no-ubuntu-9-10</link>
		<comments>http://blog.voraz.com.br/instalando-gem-rmagick-no-ubuntu-9-10#comments</comments>
		<pubDate>Wed, 14 Apr 2010 11:30:25 +0000</pubDate>
		<dc:creator>adriano</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[imagem]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rmagick]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[uploadimagem]]></category>

		<guid isPermaLink="false">http://blog.voraz.com.br/?p=1057</guid>
		<description><![CDATA[Para quem sofre ao necessitar instalar o RMagick no seu ubuntu, aqui vai uma possível solução. Não posso garantir que irá resolver o problema de todo mundo mesmo acreditando que sim mas não afirmarei com certeza. Quando tentava instalar, ocorria o seguinte erro: [bash] *** extconf.rb failed *** Could not create Makefile due to some [...]]]></description>
			<content:encoded><![CDATA[<p>Para quem sofre ao necessitar instalar o <a href="http://rmagick.rubyforge.org/" target="_blank">RMagick </a>no seu ubuntu, aqui vai uma possível solução. Não posso garantir que irá resolver o problema de todo mundo mesmo acreditando que sim mas não afirmarei com certeza.</p>
<p>Quando tentava instalar, ocorria o seguinte erro:</p>
<p>[bash]<br />
*** extconf.rb failed ***<br />
Could not create Makefile due to some reason, probably lack of<br />
necessary libraries and/or headers.  Check the mkmf.log file for more<br />
details.  You may need configuration options.</p>
<p>Provided configuration options:<br />
&#8211;with-opt-dir<br />
&#8211;without-opt-dir<br />
&#8211;with-opt-include<br />
&#8211;without-opt-include=${opt-dir}/include<br />
&#8211;with-opt-lib<br />
&#8211;without-opt-lib=${opt-dir}/lib<br />
&#8211;with-make-prog<br />
&#8211;without-make-prog<br />
&#8211;srcdir=.<br />
&#8211;curdir<br />
&#8211;ruby=/usr/local/bin/ruby<br />
[/bash]</p>
<h2>Instalando dependências</h2>
<p>[bash]<br />
sudo aptitude install libperl-dev<br />
sudo aptitude install libmagickwand-dev<br />
sudo aptitude install libmagickcore-dev libmagick++-dev<br />
[/bash]</p>
<h2>Instalando ImageMagick</h2>
<p>E qual foi a solução? Adivinha! Tive de fazer o donwload e compilar &#8220;na mão&#8221; o <a href="http://www.imagemagick.org/script/index.php" target="_blank">ImageMagick</a>. Instalar o mesmo utilizando aptitude,<br />
apt-get não resolvia. Então, faça os seguintes procedimentos para também ser feliz.</p>
<p>[bash]<br />
wget ftp://ftp.fifi.org/pub/ImageMagick/ImageMagick-6.5.7-10.tar.gz<br />
tar -vzxf ImageMagick-6.5.7-10.tar.gz<br />
cd ImageMagick-6.5.7-10/<br />
./configure<br />
make<br />
sudo make install<br />
[/bash]</p>
<h2>Instalando RMagick</h2>
<p>Agora finalmente poderemos instalar a nossa gem RMagick</p>
<p>[bash]<br />
gem install rmagick<br />
[/bash]</p>
<p>E é isso ai! Sucesso!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.voraz.com.br/instalando-gem-rmagick-no-ubuntu-9-10/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Instalando e configurando o Postgresql com RubyOnRails no ArchLinux</title>
		<link>http://blog.voraz.com.br/instalando-e-configurando-o-postgresql-com-rubyonrails-no-archlinux</link>
		<comments>http://blog.voraz.com.br/instalando-e-configurando-o-postgresql-com-rubyonrails-no-archlinux#comments</comments>
		<pubDate>Tue, 13 Apr 2010 11:28:21 +0000</pubDate>
		<dc:creator>adriano</dc:creator>
				<category><![CDATA[Banco de dados]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[banco]]></category>
		<category><![CDATA[bd]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.voraz.com.br/?p=1008</guid>
		<description><![CDATA[Segue aqui os comandos necessários para que você instale seu ambiente de desenvolvimento com o banco de dados PostgreSQL. Instalação: [bash] pacman -S postgresql [/bash] Startando banco de dados [bash] /etc/rc.d/postgresql start [/bash] Criando o usuário do PostgreSQL [bash] groups postgres su root su &#8211; postgres createuser &#60;username&#62; [/bash] Adaptador para o Rails [bash] gem [...]]]></description>
			<content:encoded><![CDATA[<p>Segue aqui os comandos necessários para que você instale seu ambiente de desenvolvimento com o banco de dados <a href="http://www.postgresql.org/" target="_blank">PostgreSQL</a>.</p>
<h2>Instalação:</h2>
<p>[bash]</p>
<p>pacman -S postgresql</p>
<p>[/bash]</p>
<h2>Startando banco de dados</h2>
<p>[bash]</p>
<p>/etc/rc.d/postgresql start</p>
<p>[/bash]</p>
<h2>Criando o usuário do PostgreSQL</h2>
<p>[bash]<br />
groups postgres<br />
su root<br />
su &#8211; postgres<br />
createuser &lt;username&gt;<br />
[/bash]</p>
<h2>Adaptador para o Rails</h2>
<p>[bash]<br />
gem install pg<br />
[/bash]</p>
<h2>Criando projeto rails com PostgreSQL</h2>
<p>Pronto. Agora é só criar seu projeto rails voltado para o postgresql</p>
<p>[bash]<br />
rails &lt;nome_projeto&gt; &#8211;d=postgresql<br />
[/bash]</p>
<p>Agora configure seu arquivo <strong>database.yml</strong> com o usuário e senha que você criou acima.<br />
Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.voraz.com.br/instalando-e-configurando-o-postgresql-com-rubyonrails-no-archlinux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ArchLinux: Ambiente RubyOnRails e PHP</title>
		<link>http://blog.voraz.com.br/archlinux-ambiente-rubyonrails-e-php</link>
		<comments>http://blog.voraz.com.br/archlinux-ambiente-rubyonrails-e-php#comments</comments>
		<pubDate>Sat, 20 Mar 2010 14:54:39 +0000</pubDate>
		<dc:creator>Alexandre Bini</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-cgi]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rvm]]></category>
		<category><![CDATA[spawn-cgi]]></category>

		<guid isPermaLink="false">http://blog.voraz.com.br/?p=919</guid>
		<description><![CDATA[Uma das distribuições linux que vem ganhando grande destaque atualmente é o ArchLinux. Ele possui uma comunidade fantástica, uma wiki excepcional, não nos prende a um desktop environment possibilitando assim a instalação do xfce, kde, gnome, etc sem grandes dores de cabeça e com total compatibilidade. Outro aspecto interessante é que não é uma distribuição [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.voraz.com.br/wp-content/uploads/2010/03/logo-en.png"><img class="alignnone" title="logo-en" src="http://blog.voraz.com.br/wp-content/uploads/2010/03/logo-en-300x88.png" alt="" width="300" height="88" /></a>Uma das distribuições linux que vem ganhando grande destaque atualmente é o <a href="http://www.archlinux.org/" target="_blank">ArchLinux</a>. Ele possui uma <a href="http://aur.archlinux.org/" target="_blank">comunidade</a> fantástica, uma <a href="http://wiki.archlinux.org" target="_blank">wiki</a> excepcional, não nos prende a um <a href="http://wiki.archlinux.org/index.php/Desktop_Environment" target="_blank">desktop environment</a> possibilitando assim a instalação do <a href="http://wiki.archlinux.org/index.php/Xfce" target="_blank">xfce</a>, <a href="http://wiki.archlinux.org/index.php/Kde" target="_blank">kde</a>, <a href="http://wiki.archlinux.org/index.php/Gnome">gnome</a>, etc sem grandes dores de cabeça e com total compatibilidade. Outro aspecto interessante é que não é uma distribuição derivada de outra, como é o caso do  Ubuntu/Debian. Vale a pena testá-la.</p>
<p>Aqui na Voraz, deixamos de utilizar o Ubuntu e passamos a utilizar o Arch sem nenhum problema, e com um ganho de performance enorme.</p>
<p>Hoje vamos preparar o arch para desenvolvimento de aplicações rails e php com o banco de dados mysql.</p>
<h2><a href="http://www.mysql.com/" target="_blank">MySql</a></h2>
<p>[shell]<br />
pacman -S mysql<br />
/etc/rc.d/mysqld start<br />
/usr/bin/mysqladmin -u root  password &#8216;seu_password&#8217;<br />
[/shell]</p>
<h2><a href="http://www.php.net" target="_blank">Php</a></h2>
<p>Existem diversas alternativas para rodarmos php e nginx juntos, utilizaremos aqui o spawn-cgi</p>
<p>[shell]<br />
pacman -S php-cgi php-mcrypt<br />
yaourt -S spawn-fcgi<br />
[/shell]</p>
<p>Agora abra seu arquivo <em><strong>/etc/php/php.ini</strong></em></p>
<p>[shell]<br />
#verifique se a pasta que você utilizará como root no nginx na linha open_basedir. Se não tiver, adicione<br />
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/root/</p>
<p>#libere os módulos que deseja, no meu caso são esses:<br />
extension=bz2.so<br />
extension=mcrypt.so<br />
extension=mysql.so<br />
extension=zip.so<br />
[/shell]</p>
<p>Para startar o php basta utilizar o seguinte comando:</p>
<p>[shell]<br />
spawn-fcgi -a 127.0.0.1 -p 9000 -f /usr/bin/php-cgi &amp;<br />
[/shell]</p>
<h2><a href="http://rvm.beginrescueend.com/" target="_blank"><strong>Rvm</strong></a></h2>
<p>O rvm, que nos permite utilizar várias versões do Ruby .</p>
<p>[shell]<br />
pacman -S git #caso ainda não tenha o git instalado.<br />
mkdir -p ~/.rvm/src/ &amp;&amp; cd ~/.rvm/src &amp;&amp; rm -rf ./rvm/ &amp;&amp; git clone &#8211;depth 1 git://github.com/wayneeseguin/rvm.git &amp;&amp; cd rvm &amp;&amp; ./install<br />
[/shell]</p>
<p>Reinicie seu terminal e caso não tenha o comando &#8220;rvm&#8221;, adicione a seguinte linha ao seu <strong><em>.bashrc</em></strong> e reinicie o terminal novamente.</p>
<p>[shell]<br />
if [[ -s /usr/local/rvm/scripts/rvm ]] ; then source /usr/local/rvm/scripts/rvm ; fi<br />
[/shell]</p>
<p>Agora vamos instalar as versões 1.8.7 e 1.9.1 do ruby e setar a versão padrão a ser utilizada.</p>
<p>[shell]<br />
rvm install 1.8.7,1.9.1<br />
rvm &#8211;default 1.9.1<br />
[/shell]</p>
<p>e algumas gems:</p>
<p>[shell]<br />
gem update<br />
gem install gem_plugin rails<br />
gem install mongrel &#8211;source http://gems.rubyinstaller.org/&quot;&gt;http://gems.rubyinstaller.org #para ruby 1.9.1<br />
[/shell]</p>
<h2><a href="http://nginx.org/" target="_blank">Nginx</a> / <a href="http://www.modrails.com/" target="_blank">Passenger</a></h2>
<p>Nginx é um servidor leve, de baixo consumo de memória e alta performance e com arquivos de configuração bem claros e simples.</p>
<p>Na Voraz, substituímos o apache pelo nginx e não temos do que reclamar. O passenger nos permite rodar aplicações rails diretamente no nginx (ou no apache). Vamos a instalação:</p>
<p>[shell]<br />
gem install passenger<br />
passenger-install-nginx-module<br />
[/shell]</p>
<p>O segundo comando irá baixar e compilar o nginx já com o módulo do passenger instalado. Agora vamos fazer uma configuração básica do nginx. Abra o arquivo <strong><em>/opt/nginx/conf/nginx.conf</em></strong></p>
<p>[shell]<br />
worker_processes  1;</p>
<p>error_log  logs/error.log;</p>
<p>http {<br />
 passenger_root /usr/local/rvm/gems/ruby-1.9.1-p378/gems/passenger-2.2.11;<br />
 passenger_ruby /usr/local/rvm/rubies/ruby-1.9.1-p378/bin/ruby;</p>
<p> include       mime.types;<br />
 default_type  application/octet-stream;</p>
<p> access_log off;</p>
<p> sendfile        on;</p>
<p> keepalive_timeout  65;</p>
<p> client_max_body_size 15m;</p>
<p> autoindex on;</p>
<p> index  index.html index.htm index.php;</p>
<p> charset utf-8;</p>
<p> include fastcgi_params;<br />
 include /opt/nginx/sites-enabled/*;<br />
}<br />
[/shell]</p>
<p>Vá ao arquivo <strong><em>/opt/nginx/conf/fastcgi_params</em></strong> (provavelmente você só precisará adicionar a ultima linha)</p>
<p>[shell]</p>
<p>fastcgi_param  QUERY_STRING       $query_string;<br />
fastcgi_param  REQUEST_METHOD     $request_method;<br />
fastcgi_param  CONTENT_TYPE       $content_type;<br />
fastcgi_param  CONTENT_LENGTH     $content_length;</p>
<p>fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;<br />
fastcgi_param  REQUEST_URI        $request_uri;<br />
fastcgi_param  DOCUMENT_URI       $document_uri;<br />
fastcgi_param  DOCUMENT_ROOT      $document_root;<br />
fastcgi_param  SERVER_PROTOCOL    $server_protocol;</p>
<p>fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;<br />
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;</p>
<p>fastcgi_param  REMOTE_ADDR        $remote_addr;<br />
fastcgi_param  REMOTE_PORT        $remote_port;<br />
fastcgi_param  SERVER_ADDR        $server_addr;<br />
fastcgi_param  SERVER_PORT        $server_port;<br />
fastcgi_param  SERVER_NAME        $server_name;</p>
<p># PHP only, required if PHP was built with &#8211;enable-force-cgi-redirect<br />
fastcgi_param  REDIRECT_STATUS    200;</p>
<p>fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;<br />
[/shell]</p>
<p>Vamos criar a pasta <strong><em>/opt/nginx/sites-enabled</em></strong> onde deixaremos os arquivos de configuração de nossos sites e o arquivo<strong><em> /opt/nginx/sites-enabled/0-default</em></strong></p>
<p>[shell]<br />
server {<br />
 listen          80;<br />
 server_name     localhost;<br />
 root            /root/voraz;</p>
<p> error_page   500 502 503 504  /50x.html;<br />
 location = /50x.html {<br />
   root   html;<br />
 }<br />
 location ~ \.php$ {<br />
   fastcgi_pass   127.0.0.1:9000;<br />
 }<br />
}<br />
[/shell]</p>
<p>Desse modo, todas as requisições a arquivos .php serão encaminhadas ao pgp-cgi. Agora vamos criar um novo arquivo de configuração para uma aplicação rails: <strong><em>/opt/nginx/sites-enabled/teste-rails</em></strong></p>
<p>[shell]<br />
server{<br />
  server_name         sindicato.org.br www.sindicato.org.br;<br />
  root                /root/voraz/teste-rails/public; #deve sempre apontar para a pasta public<br />
  passenger_enabled   on;<br />
  rails_env           production;<br />
}<br />
[/shell]</p>
<p>Para finalizar, alguns comandos do nginx:</p>
<p>[shell]<br />
/opt/nginx/sbin/nginx #start o nginx<br />
/opt/nginx/sbin/nginx -s stop #para o nginx<br />
/opt/nginx/sbin/nginx -s reload #retarta o nginx<br />
[/shell]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.voraz.com.br/archlinux-ambiente-rubyonrails-e-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby1.8 vs Ruby1.9</title>
		<link>http://blog.voraz.com.br/ruby1-8-vs-ruby1-9</link>
		<comments>http://blog.voraz.com.br/ruby1-8-vs-ruby1-9#comments</comments>
		<pubDate>Mon, 16 Nov 2009 05:13:38 +0000</pubDate>
		<dc:creator>Alexandre Bini</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[kohonen ruby1.9 ruby1.8]]></category>

		<guid isPermaLink="false">http://blog.voraz.com.br/?p=779</guid>
		<description><![CDATA[Muito já se falou[1] [2] sobre as vantagens da versão 1.9 em relação ao 1.8 do ruby, mas nós (como muitos de vocês que estão nos lendo) não estamos utilizando tal advento em produção, pois ela ainda apresenta algumas incompatibilidades com plugins que não conseguimos viver. Como alguns devem saber, estou implementando para meu tcc [...]]]></description>
			<content:encoded><![CDATA[<p>Muito já se falou<a href="http://blog.pluron.com/2009/05/ruby-19-performance.html" target="_blank">[1]</a> <a href="http://antoniocangiano.com/2008/12/10/reflections-on-the-ruby-shootout/" target="_blank">[2]</a> sobre as vantagens da versão 1.9 em relação ao 1.8 do ruby, mas nós (como muitos de vocês que estão nos lendo) não estamos utilizando tal advento em produção, pois ela ainda apresenta algumas incompatibilidades com plugins que <span style="text-decoration: line-through;">não</span> conseguimos viver.</p>
<p>Como alguns devem saber, estou implementando para meu tcc um software que dentre outras coisas realiza o <a href="http://en.wikipedia.org/wiki/Self-organizing_map" target="_self">self-organizing-map</a>, de <a href="http://en.wikipedia.org/wiki/Teuvo_Kohonen">Kohonen</a>. Tal algoritmo não é tão complexo a nível de programação, mas como grande parte dos algoritmos de Inteligência Artificial, ele consome muito processamento.</p>
<p>Devido a isso, realizei diversas implementações (actionscript, ruby puro, ruby e c++) &#8211; em breve disponibilizarei &#8211; e o que realmente me chamou atenção foi quanto a performance da nova versão que nesse teste, foi quase 2x mais rápida:</p>
<p style="text-align: center;"><a href="http://blog.voraz.com.br/wp-content/uploads/2009/11/Screenshot-1.png"></a><a href="http://blog.voraz.com.br/wp-content/uploads/2009/11/Screenshot-2.png"><img class="aligncenter size-full wp-image-792" title="Comparativo entre tempo de execução - quanto menor, melhor" src="http://blog.voraz.com.br/wp-content/uploads/2009/11/Screenshot-2.png" alt="Comparativo entre tempo de execução - quanto menor, melhor" width="371" height="341" /></a></p>
<p><strong>Ruby 1.8:</strong></p>
<p>[bash]script/performance/benchmarker 2 Train.test_rb<br />
user     system      total        real<br />
#1     39.510000   7.040000  46.550000 ( 46.574937)<br />
#1     41.900000   7.060000  48.960000 ( 49.245010)<br />
#1     42.260000   7.020000  49.280000 ( 49.644825)<br />
[/bash]</p>
<p><strong>Ruby 1.9:</strong></p>
<p>[bash]script/performance/benchmarker 2 Train.test_rb<br />
user     system      total        real<br />
#1     28.100000   0.060000  28.160000 ( 28.193008)<br />
#1     26.790000   0.100000  26.890000 ( 27.049028)<br />
#1     27.150000   0.060000  27.210000 ( 27.616277)<br />
[/bash]</p>
<p>É (ou já passou) a hora de mudar.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.voraz.com.br/ruby1-8-vs-ruby1-9/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Populando banco de dados utilizando exemplares e faker</title>
		<link>http://blog.voraz.com.br/populando-banco-de-dados-utilizando-exemplares-e-faker</link>
		<comments>http://blog.voraz.com.br/populando-banco-de-dados-utilizando-exemplares-e-faker#comments</comments>
		<pubDate>Thu, 22 Oct 2009 01:52:50 +0000</pubDate>
		<dc:creator>adriano</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[exemplares]]></category>
		<category><![CDATA[exemplars]]></category>
		<category><![CDATA[faker]]></category>

		<guid isPermaLink="false">http://blog.voraz.com.br/?p=706</guid>
		<description><![CDATA[Ter dados para testes é fundamental para testar qualquer tipo de aplicativo entretanto, ficar populando banco de dados é um trabalho muito cansativo, sem contar que é muito chato. Pensando que este é o que se pode considerar um problema para qualquer desenvolvedor, este post lhe ajudará bastante. Irei tratar do Faker. Para quem não [...]]]></description>
			<content:encoded><![CDATA[<p>Ter dados para testes é fundamental para testar qualquer tipo de aplicativo entretanto, ficar populando banco de dados é um trabalho muito cansativo, sem contar que é muito chato. Pensando que este é o que se pode considerar um problema para qualquer desenvolvedor, este post lhe ajudará bastante.</p>
<p>Irei tratar do Faker. Para quem não o conhece, o mesmo é responsável por gerar dados <span style="color: #000000;">fictícios</span> sendo eles dados pessoais, empresariais, endereços enfim, muitas coisas. Garantindo assim uma grande praticidade.</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->O primeiro passo e óbvio é instalarmos o Faker.</p>
<p>[bash]<br />
sudo gem install faker<br />
[/bash]</p>
<p><a href="http://faker.rubyforge.org/rdoc/"><br />
Acessando a documentação</a>, você poderá perceber a quantidade de coisas que ele é capaz de gerar. Faça um teste no console, abra-o e faça um <strong>require ‘faker’</strong> e é só brincar.</p>
<p>Alguns exemplos</p>
<p>[bash]<br />
#fazendo o require da gem<br />
&gt;&gt; require &#8216;faker&#8217;<br />
=&gt; true</p>
<p>#Nomes<br />
&gt;&gt; Faker::Name.name<br />
=&gt; &quot;Arlo Moore&quot;</p>
<p>#Sobrenomes<br />
&gt;&gt; Faker::Name.last_name<br />
=&gt; &quot;Stoltenberg&quot;</p>
<p>#Cidades<br />
&gt;&gt; Faker::Address.city<br />
=&gt; &quot;Jerrellfort&quot;<br />
[/bash]</p>
<p>Chega de brincar e vamos a proposta do post: <strong><span style="color: #000000;">Gerar exemplares inteligentes</span></strong>.</p>
<p>Primeiramente, instale o plugin <a href="http://github.com/flogic/object_daddy">object_daddy</a> para que possamos utilizar os exemplares. Pois, é com ele que utilizaremos o <span style="color: #993300;">.generate</span> na hora de popularmos o banco.</p>
<p>[bash]<br />
script/plugin install git://github.com/flogic/object_daddy.git<br />
[/bash]</p>
<p>Caso você utilize rspec, crie dentro da pasta <strong>spec</strong> uma pasta chamada <strong>exemplars</strong> e aqueles que não utilizam, crie dentro da pasta <strong>test</strong>.</p>
<p>Usuários rspec:</p>
<p style="padding-left: 30px;"><img class="alignnone size-full wp-image-711" title="exemplar_spec1" src="http://blog.voraz.com.br/wp-content/uploads/2009/10/exemplar_spec1.jpg" alt="exemplar_spec1" width="138" height="113" /></p>
<p>Não usuários rspec:</p>
<p style="padding-left: 30px;"><img class="alignnone size-full wp-image-712" title="diretorio_exemplar" src="http://blog.voraz.com.br/wp-content/uploads/2009/10/diretorio_exemplar.jpg" alt="diretorio_exemplar" width="162" height="80" /></p>
<p>Agora dentro da pasta criada, você irá criando os exemplares de seus models. Por exemplo no meu caso tenho o model <strong>User</strong>. Então dentro desta pasta criarei um arquivo <strong>user_exemplar.rb</strong>. Em outras palavras é o nome do <strong>model</strong> seguido do sufixo &#8216;<strong>_exemplar.rb</strong>&#8216;.</p>
<p style="padding-left: 30px;"><img class="alignnone size-full wp-image-713" title="exempalr_user" src="http://blog.voraz.com.br/wp-content/uploads/2009/10/exempalr_user.jpg" alt="exempalr_user" width="182" height="98" /></p>
<p>O exemplar inicialmente ficará assim:</p>
<p>[ruby]<br />
class User</p>
<p>end<br />
[/ruby]</p>
<p>Vamos ao que interessa! =)<br />
Considera-se que minha classe de usuário possua os atributos: <strong>nome</strong>, <strong>sobrenome</strong>, <strong>nome da rua</strong>, <strong>número da casa</strong> e <strong>nome da cidade</strong>. Se fosse no modo convencional, ficaria assim:</p>
<p>[ruby]<br />
class User<br />
 generator_for :name,      “Adriano”<br />
 generator_for :sobrenome, “Tadao”<br />
 generator_for :street,    “Rua Americana”<br />
 generator_for :number,    “104”<br />
 generator_for :city,      “Birigui”<br />
end<br />
[/ruby]</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="margin-bottom: 0in;">Mas como nos interessa um model inteligente capaz de gerar usuários de nomes diferentes isso ai não nos interessa! Ao <span style="color: #000000;">invés</span><span style="color: #ff0000;"> </span><span style="color: #000000;">de informarmos um valor estático, setaremos um método em seu lugar. Veja o exemplo:</span></p>
<p>[ruby]<br />
class User<br />
 generator_for :name,       :method=&gt;:some_name<br />
 generator_for :surname,    :method=&gt;:some_surname<br />
 generator_for :street,     :method=&gt;:some_street<br />
 generator_for :number,     :method=&gt;:some_number<br />
 generator_for :city,       :method=&gt;:some_city</p>
<p> #Faremos com que os nomes sejam todos diferentes, para isso utilizaremos o while para garantir que não se repetirá<br />
 def self.some_name<br />
  begin<br />
   last_name = Faker::Name.name<br />
  end while User.find_by_name(last_name)!=nil</p>
<p>  last_name<br />
 end</p>
<p> #Como o sobrenome não importa se irá repetir ou não, fica simples assim<br />
 def self.some_surname<br />
  Faker::Name.last_name<br />
 end</p>
<p> #Nome da rua que também poderá repetir<br />
 def self.some_street<br />
  Faker::Address.street_name<br />
 end</p>
<p> #O número da casa que este não utilizará o faker, apenas sorteará números de até três dígitos<br />
 def self.some_number<br />
  rand(999)<br />
 end</p>
<p> #O nome da cidade que também poderá ser repetido<br />
 def self.some_city<br />
  Faker::Address.city<br />
 end</p>
<p>end<br />
[/ruby]</p>
<p>Ok! Nosso exemplar já está apto a popular nosso banco de dados. Veja como será o processo agora.</p>
<p>Abra o <strong>console (script/console)</strong> da aplicação em questão e faça o require do <a href="http://faker.rubyforge.org/rdoc/">faker</a>.</p>
<p>[bash]<br />
&gt;&gt; require &#8216;faker&#8217;<br />
=&gt; []</p>
<p>#Gerar uma única vez<br />
&gt;&gt; User.generate<br />
=&gt; #&lt;User id: 3, name: &quot;Camila Hamill&quot;, created_at: &quot;2009-10-15 23:07:50&quot;, updated_at: &quot;2009-10-15 23:07:50&quot;, surname: &quot;Sauer&quot;, street: &quot;Dixie Route&quot;, number: 152, city: &quot;Yostfort&quot;&gt;</p>
<p>#Gerar determinada quantidade de usuários.<br />
&gt;&gt; 10.times{ User.generate }<br />
=&gt; 10</p>
<p>[/bash]</p>
<p>Para gerar determinada quantidade de vezes a sintax é a seguinte:</p>
<p>[bash]<br />
[Quantidade].times{ [Model].generate }<br />
[/bash]</p>
<p>Note no seu banco que está tudo lá gerado e salvo.</p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.voraz.com.br/populando-banco-de-dados-utilizando-exemplares-e-faker/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enviando e-mail com RubyOnRails utilizando ActionMailer</title>
		<link>http://blog.voraz.com.br/enviando-e-mail-com-ruby-utilizando-actionmailer</link>
		<comments>http://blog.voraz.com.br/enviando-e-mail-com-ruby-utilizando-actionmailer#comments</comments>
		<pubDate>Thu, 15 Oct 2009 03:16:49 +0000</pubDate>
		<dc:creator>adriano</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[ActionMailer]]></category>
		<category><![CDATA[Enviando emails]]></category>

		<guid isPermaLink="false">http://blog.voraz.com.br/?p=660</guid>
		<description><![CDATA[Olá a todos! Segue aqui um post simples, prático e objetivo de como enviar e-mails utilizando o ActionMailer. Existem vários tutoriais explicando a mesma ação mas como muitos deles ensinam de tudo um pouco, crio este no formato que considero simples. Não sei se todos virão como simples pois aqui na voraz nossa camada visual [...]]]></description>
			<content:encoded><![CDATA[<p>Olá a todos! Segue aqui um post simples, prático e objetivo de como enviar e-mails utilizando o <a href="http://am.rubyonrails.org/">ActionMailer</a>. Existem vários tutoriais explicando a mesma ação mas como muitos deles ensinam de tudo um pouco, crio este no formato que considero simples. Não sei se todos virão como simples pois aqui na <a href="http://voraz.com.br">voraz</a> nossa camada visual é flash então só nos interessa uma função mesmo, nada demais. Mesmo não contendo explicação de todos os métodos disponíveis, acredito que  resolverá seu problema. =)</p>
<p>Ao trabalho!</p>
<p>O primeiro passo é você criar o model que extenda a classe <a href="http://am.rubyonrails.org/">ActionMailer</a> que será o responsável pelo envio dos e-mails.</p>
<p>[bash]<br />
script/generate mailer email<br />
  exists  app/models/<br />
  create  app/views/email<br />
  exists  test/unit/<br />
  create  test/fixtures/email<br />
  create  app/models/email.rb<br />
  create  test/unit/email_test.rb<br />
[/bash]</p>
<p>Feito isso, será criado um model vazio.</p>
<p>[ruby]<br />
class Email &lt; ActionMailer::Base<br />
end<br />
[/ruby]</p>
<p>Agora criaremos uma função que terá a finalidade de montar todo nosso email.</p>
<p>[ruby]<br />
class Email &lt; ActionMailer::Base</p>
<p> def register_email(para, de, assunto, mensagem)<br />
  recipients para<br />
  from de<br />
  subject assunto<br />
  sent_on Time.now<br />
  body mensagem<br />
  content_type &quot;text/html&quot;<br />
 end</p>
<p>end[/ruby]</p>
<p>No exemplo acima, a função recebe os valores de parâmetro tudo separadamente. Nada o impede de criar uma função que receba um único objeto. É possível enviar a mensagem (body) tanto como texto normal ou como html. Case queira enviar para mais de um e-mail, basta enviar os e-mails em questão dentro de um array que ele automaticamente enviará para todos</p>
<p>Até agora temos o model baseado no ActionMailer com uma função que criará nosso e-mail. O próximo passo é configurarmos o arquivo <span style="color: #993300;">config/enviroment.rb</span> mas por quê? Por que o ruby precisa de uma conta que será responsável por fazer os envios</p>
<p>Abra seu enviroment.rb que se encontra na pasta config e deixe-o similar ao exemplo. Adicione estas linhas lá no final do documento.</p>
<p>[bash]<br />
#Exemplo: Configurando para deixar o adriano@voraz.com.br como o email responsável:</p>
<p>ActionMailer::Base.smtp_settings =<br />
{<br />
 :address =&gt; &quot;smtp.voraz.com.br&quot;,<br />
 :port=&gt;&#8217;25&#8242;,<br />
 :domain =&gt; &quot;voraz.com.br&quot;,<br />
 :user_name =&gt; &quot;adriano@voraz.com.br&quot;,<br />
 :password =&gt; &quot;*******&quot;,<br />
 :authentication  =&gt; :login<br />
}<br />
[/bash]</p>
<p>Entenda a sintax:</p>
<p>[ruby]</p>
<p>Email.deliver_register_email([para quem vai], [quem está enviando], [assunto], [mensagem])</p>
<p>[/ruby]</p>
<p>Na prática:</p>
<p>[ruby]<br />
 #corpo da mensagem em html<br />
 body = &quot;&lt;b&gt;Data e horário:&lt;/b&gt; #{Time.now.strftime(&#8216;%d/%m/%y&#8217;)} &#8211; #{Time.now.strftime(&#8216;%H:%M&#8217;)}\n&quot;<br />
 body &lt;&lt; &quot;&lt;b&gt;Nome:&lt;/b&gt; Adriano\n&quot;<br />
 body &lt;&lt; &quot;&lt;b&gt;E-mail:&lt;/b&gt; adriano@voraz.com.br\n&quot;<br />
 body &lt;&lt; &quot;&lt;b&gt;Telefone:&lt;/b&gt; 18 – 3641 4382\n\n&quot;<br />
 body &lt;&lt; &quot;&lt;b&gt;Assunto:&lt;/b&gt;Testando o envio de e-mail \n&quot;<br />
 body &lt;&lt; &quot;&lt;b&gt;Mensagem:&lt;/b&gt; Apenas teste&quot;</p>
<p> #Aqui faz o envio</p>
<p> Email.deliver_register_email(“adriano@voraz.com.br”, “voraz@voraz.com.br”, &quot;Teste do envio&quot;, body)<br />
[/ruby]</p>
<p>Note o prefixo <strong><span style="color: #993300;">deliver_</span></strong> antes da função que criamos inicialmente. O mesmo é responsável por enviar nosso email. Não se esqueça dele pois nada funcionará.</p>
<p>Bem simples não?</p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.voraz.com.br/enviando-e-mail-com-ruby-utilizando-actionmailer/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

