<?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>Gregório Melo</title>
	<atom:link href="http://gregoriomelo.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gregoriomelo.com</link>
	<description>Aprendendo e compartilhando</description>
	<lastBuildDate>Wed, 09 Nov 2011 01:33:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Internacionalizando aplicativos para iOS no XCode 4.2 parte 1 &#8211; NIBs e Storyboards</title>
		<link>http://gregoriomelo.com/2011/internacionalizando-aplicativos-para-ios-no-xcode-4-2-parte-1-nibs-e-storyboards/</link>
		<comments>http://gregoriomelo.com/2011/internacionalizando-aplicativos-para-ios-no-xcode-4-2-parte-1-nibs-e-storyboards/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 01:33:01 +0000</pubDate>
		<dc:creator>gregoriomelo</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[internacionalização]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://gregoriomelo.com/?p=135</guid>
		<description><![CDATA[Não foi fácil encontrar um passo a passo legal pra mostrar como internacionalizar aplicativos para iOS com o XCode 4.2 Os tutoriais que encontrei eram defasados, pouco instrutivos ou incompletos. Encontrei o melhor texto no livro iOS Programming: The Big Nerd (&#8230;)</p><p><a href="http://gregoriomelo.com/2011/internacionalizando-aplicativos-para-ios-no-xcode-4-2-parte-1-nibs-e-storyboards/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Não foi fácil encontrar um passo a passo legal pra mostrar como internacionalizar aplicativos para iOS com o XCode 4.2 Os tutoriais que encontrei eram defasados, pouco instrutivos ou incompletos. Encontrei o melhor texto no livro <a title="iOS Programming: The Big Nerd Ranch Guide" href="http://www.amazon.com/iOS-Programming-Ranch-Guide-Guides/dp/0321773772/" target="_blank">iOS Programming: The Big Nerd Ranch Guide</a>. Vou tentar sintetizar um pouco. Vamos começar pelos</p>
<h2>NIBs ou Storyboards</h2>
<p>Abra sua aplicações para iOS no XCode e selecione a tela que você desejar internacionalizar primeiro. Abra o File Inspector (Cmd + Option + 1). Há um bloco chamado &#8216;Localization&#8217;:</p>
<p><a href="http://gregoriomelo.com/wp-content/uploads/2011/11/localization.png"><img class="alignnone size-full wp-image-136" title="localization" src="http://gregoriomelo.com/wp-content/uploads/2011/11/localization.png" alt="localization" width="259" height="159" /></a></p>
<p>Clique no &#8216;+&#8217; e escolha língua para a qual você deseja ter a sua aplicação internacionalizada (vamos focar no português). Veja que o arquivo de interface fica com opção para expandir o conteúdo:</p>
<p><a href="http://gregoriomelo.com/wp-content/uploads/2011/11/expanded_storyboard.png"><img class="alignnone size-full wp-image-138" title="expanded_storyboard" src="http://gregoriomelo.com/wp-content/uploads/2011/11/expanded_storyboard.png" alt="Expanded Storyboard" width="261" height="220" /></a></p>
<h2>E vamos pra linha de comando!</h2>
<p>No Terminal, entre no diretório raiz da sua aplicação. Entre na pasta com o nome da sua aplicação (por exemplo, MyApp). Dentro dela há uma pasta chamada &#8216;en.proj&#8217; entre nela e digite o seguinte comando:</p>
<pre>ibtool --generate-strings-file ../../Localizable.strings TELA</pre>
<p>Em vez de tela, ponha o nome do NIB ou Storyboard que você deseja internacionalizar. Como exemplo, o comando poderia ser o seguinte:</p>
<pre>ibtool --generate-strings-file ../../Localizable.strings MainStoryboard.storyboard</pre>
<p>Onde MainStoryboard.storyboard é o arquivo que eu desejo internacionalizar.</p>
<p>Este comando irá criar um arquivo chamado Localizable.string na raiz do seu projeto. Edite o arquivo Localizable.strings para colocar os campos na língua que você deseja. Vá para a pasta da nova linguagem suportada, pt.lproj e digite o seguinte comando:</p>
<pre>ibtool --strings-file ../../Localizable.strings --write MainStoryBoard.storyboard ../en.lproj/MainStoryBoard.storyboard</pre>
<p>(Lembrando que MainStoryboard.storyboard é o nome do arquivo da tela da nossa aplicação o qual desejamos internacionalizar.) Esse comando cria um arquivo de interface chamado MainStoryboard.storyboard na pasta que estamos, baseado no arquivo de storyboard da pasta em inglês, e pega o conteúdo do arquivo Localizable.strings para poder preencher o texto dos campos.</p>
<p>Depois de executar o comando acima, volte para o XCode e abra a tela internacionalizada. Agora é só repetir os mesmos passos com outras linguagens. Quando um novo campo for criado, a mesma rotina deverá ser executada.</p>
<p>Valeu!</p>
]]></content:encoded>
			<wfw:commentRss>http://gregoriomelo.com/2011/internacionalizando-aplicativos-para-ios-no-xcode-4-2-parte-1-nibs-e-storyboards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apresentação: Programação Orientada a Testes &#8211; Introdução e caso de sucesso na Dataprev</title>
		<link>http://gregoriomelo.com/2011/apresentacao-programacao-orientada-a-testes-introducao-e-caso-de-sucesso-na-dataprev/</link>
		<comments>http://gregoriomelo.com/2011/apresentacao-programacao-orientada-a-testes-introducao-e-caso-de-sucesso-na-dataprev/#comments</comments>
		<pubDate>Sat, 16 Apr 2011 20:51:39 +0000</pubDate>
		<dc:creator>gregoriomelo</dc:creator>
				<category><![CDATA[Apresentação]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[apresentação]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://gregoriomelo.com/?p=123</guid>
		<description><![CDATA[Há alguns meses, fiz uma apresentação sobre Desenvolvimento Orientado a Testes (TDD) na UFPB, para a Semana de Ciência, Tecnologia, Esporte, Arte e Cultura (SECIATEC). O público-alvo era composto, em sua maioria, por alunos recém-chegados à universidade e ao universo da (&#8230;)</p><p><a href="http://gregoriomelo.com/2011/apresentacao-programacao-orientada-a-testes-introducao-e-caso-de-sucesso-na-dataprev/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Há alguns meses, fiz uma apresentação sobre Desenvolvimento Orientado a Testes (TDD) na UFPB, para a <a title="SECITEAC" href="https://sites.google.com/a/dce.ufpb.br/seciteac/home" target="_blank">Semana de Ciência, Tecnologia, Esporte, Arte e Cultura (SECIATEC)</a>. O público-alvo era composto, em sua maioria, por alunos recém-chegados à universidade e ao universo da computação. Prontamente aceitei o convite do amigo Rodrigo Rebouças (<a title="Rodrigo Rebouças" href="http://twitter.com/rodrigor" target="_blank">@rodrigor</a>) para realizar minha primeira palestra.</p>
<p>O intuito era introduzir os conceitos do TDD e como havíamos aplicado a técnica (filosofia, metodologia, modo de viver, etc.) com sucesso na Dataprev, junto com alguns exemplos.</p>
<p>Eis, então, a apresentação:</p>
<div style="width:425px" id="__ss_5490940"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/GregorioMelo/programao-orientada-a-testes" title="Programação Orientada a Testes">Programação Orientada a Testes</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/5490940" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/GregorioMelo">Gregorio Melo</a> </div>
</p></div>
<p>Espero que tenha prestado!</p>
]]></content:encoded>
			<wfw:commentRss>http://gregoriomelo.com/2011/apresentacao-programacao-orientada-a-testes-introducao-e-caso-de-sucesso-na-dataprev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RVM: Desenvolvimento responsável em Ruby e Rails! Veja como instalar e usar.</title>
		<link>http://gregoriomelo.com/2011/rvm-desenvolvimento-responsavel-em-ruby-e-rails/</link>
		<comments>http://gregoriomelo.com/2011/rvm-desenvolvimento-responsavel-em-ruby-e-rails/#comments</comments>
		<pubDate>Sat, 16 Apr 2011 14:10:34 +0000</pubDate>
		<dc:creator>gregoriomelo</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rvm]]></category>

		<guid isPermaLink="false">http://gregoriomelo.com/?p=96</guid>
		<description><![CDATA[Ruby Version Manager, vulgo RVM. Se você quer se sentir mais responsável enquanto desenvolve aplicações em Ruby e Rails, use! E não é complicado. O que é o RVM? RVM é uma ferramenta fantástica que vai lhe ajudar a gerenciar (&#8230;)</p><p><a href="http://gregoriomelo.com/2011/rvm-desenvolvimento-responsavel-em-ruby-e-rails/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Ruby Version Manager, vulgo RVM. Se você quer se sentir mais responsável enquanto desenvolve aplicações em Ruby e Rails, use! E <strong>não</strong> é complicado.</p>
<h2>O que é o RVM?</h2>
<p>RVM é uma ferramenta fantástica que vai lhe ajudar a gerenciar as instalações de interpretadores Ruby. Para iniciantes, isso pode até parecer totalmente desnecessário, mas se você pretende ser um programador melhor e mais responsável, vale muito a pena aprender.</p>
<h2>Conto de fadas real</h2>
<p>Vejamos se contar uma historinha ajuda: <strong>SistemasFantásticos</strong> (SF)* é uma empresa que vem se destacando no cenário nacional de desenvolvimento de software e há anos utiliza principalmente o Rails. SF tem um projeto grande em desenvolvimento há 2 anos, o <strong>SistemaGlorioso</strong>, feito em Rails 2.3.2 e Ruby 1.8. E tem um projeto novo, o <strong>SistemaBrilhante</strong>, recém-criado com o Rails 3.0.5 e Ruby 1.9.2. Aí a SF contrata João, que, inicialmente trabalhará com o Brilhante.</p>
<p><em>*espero que este nome não esteja reservado</em></p>
<p><em></em> Logo nos primeiros dias ele instala o Rails 3 e o Ruby 1.9.2 e já vai metendo a mão no código. Com pouco tempo, sua chefa, Maria, aloca-o pra corrigir um bug no Glorioso:</p>
<p>Maria: — João, bora ali corrigir um bugzinho&#8230;</p>
<p>João: — Beleza! É só baixar o código e começar!</p>
<p>Pobre João&#8230; Ele baixa o código e vê um monte de coisa quebrar. Mesmo com pouca experiência ele percebe que o ambiente dele não está adequado e ele vai precisar substituir as versões de Ruby e de Rails&#8230; Desinstalar ambos&#8230;</p>
<p>Não com muita facilidade, ele consegue. Depois resolve o bug e manda pro repositório. Daí Maria, comunicada sobre o encerramento da atividade, realoca-o no Brilhante.</p>
<p>João: — Lasquei-me! (irrelevante se as pessoas usam ou não a ênclise ao falar)</p>
<p>Ele lembra que vai ter que fazer o mesmo serviço trabalhoso: remover o Rails 2.3.2 e o Ruby 1.8 pra instalar as versões mais novas&#8230;  Não sabia ele que poderia conversar com Pedro, que o aponta os milagres que o RVM pode providenciar nessa hora&#8230;</p>
<h2>O que o RVM faz</h2>
<p>O RVM lhe ajuda a gerenciar as instalações de Ruby e as gems instaladas na sua máquina (rails, bundler, sinatra&#8230;).</p>
<p>Então Pedro diz a João que ele pode ter várias versões de Ruby instaladas na máquina e pra mudar de uma pra outra basta um simples comando. É quase instantâneo.  No caso de João, ele usaria o RVM pra instalar cada uma das versões do Ruby. E, de acordo com os requisitos de cada projeto, ele executaria um simples comando dizendo qual versão do Ruby ele deseja.  Além disso, o RVM gerencia também as gems que estão instaladas.</p>
<p>Se há um terceiro projeto na SF que utiliza Ruby 1.8 e Rails 3, em vez de Rails 2.3. Então temos a seguinte configuração:</p>
<ul>
<li>Ruby 1.8 e Rails 2.3</li>
<li>Ruby 1.8 e Rails 3</li>
<li>Ruby 1.9 e Rails 3</li>
</ul>
<p>São 2 versões de Ruby para 2 versões de Rails, mas em 3 configurações diferentes. Imagina o sofrimento de, apesar de ter a mesma versão do Ruby, remover as gems e instalar tudo de novo de acordo com a versão do Rails desejada&#8230;</p>
<p>Aí entram os Gemsets!</p>
<h2>O que são gemsets</h2>
<p>Gemsets são conjuntos de gems. No caso acima, temos um conjunto de gems que atendem ao Rails 2.3 e outro conjunto de gems que atendem ao Rails 3. Se João for trabalhar num projeto que não usa Rails, e sim Sinatra, ele criaria um novo gemset para colocar as gems que atendem ao Sinatra e seu projeto. Nesse gemset não teria nada que fizesse referência às gems do Rails. Quando ele voltar pro projeto que usa Rails, basta só um comando e pronto. Suas gems para Rails estarão visíveis novamente. E, da mesma forma, nada de Sinatra na gemset.</p>
<h2>Como instalar o RVM</h2>
<p>Você precisa ter o curl e o make (e afins) instalados. Tanto no Linux quanto no Mac, o seguinte comando resolve a instalação:</p>
<pre>bash &lt; &lt;(curl -s https://rvm.beginrescueend.com/install/rvm)</pre>
<pre>echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] &amp;&amp; source "$HOME/.rvm/scripts/rvm"' &gt;&gt; .bash_profile</pre>
<pre>source ~/.bash_profile</pre>
<p>A primeira linha faz o download do RVM. A segunda, configura o RVM para que seja iniciado sempre que o usuário fizer o login. A terceira, o importa para a sessão atual.</p>
<p>Certifique-se que a instalação está OK com o seguinte comando:</p>
<pre>type rvm | head -1</pre>
<p>Se o retorno for :</p>
<pre>rvm is a function</pre>
<p>Então, prossigamos.</p>
<h2>Como utilizar o RVM</h2>
<p>Para verificar as versões do Ruby instaladas, execute o seguinte comando:</p>
<pre>rvm list</pre>
<p>São grandes as chances de não haver nenhuma instala, já que ainda não fizemos o RVM instalar nenhuma.</p>
<h3>Instalar versões do Ruby com o RVM</h3>
<p>Agora instalemos a versão 1.8.7:</p>
<pre>rvm install 1.8.7</pre>
<p>O RVM fará o download do código fonte da versão 1.8.7 do Ruby, fará a compilação e depois a instalação. Aguarde um pouco e depois veja que há o seguinte diretório:</p>
<pre>$HOME/.rvm/rubies/ruby-1.8.7-p334/</pre>
<p>Isso quer dizer que a versão 1.8.7 do Ruby, com o patch p334, está instalada dentro dos diretórios do usuário. Isto é muito importante, tendo em vista que esta instalação não estará disponível para outros usuários.</p>
<p>Agora que a versão 1.8.7 foi instalada, podemos utilizá-la e defini-la como padrão:</p>
<pre>rvm use 1.8.7 --default</pre>
<p>Se você executar o comando &#8216;which ruby&#8217;, o resultado mostrará o diretório ao qual me referi acima.</p>
<p>Para instalar a versão 1.9.2:</p>
<pre>rvm install 1.9.2</pre>
<p>O mesmo procedimento acontece, e agora há o seguinte diretório:</p>
<pre>$HOME/.rvm/rubies/ruby-1.9.2-p180/</pre>
<p>A versão 1.8.7 ainda está em uso. Se quiser utilizar a versão 1.9.2, recém-instalada:</p>
<pre>rvm use 1.9.2 --default</pre>
<p>Com as versões devidamente instaladas, vamos tratas os gemsets.</p>
<h3>Instalar gems com o RVM</h3>
<p>Para o nosso exemplo, vamos voltar para a versão 1.8.7:</p>
<pre>rvm use 1.8.7 --default</pre>
<p>Vamos criar um gemset para trabalharmos com o Rails 2.3.11:</p>
<pre>rvm gemset create rails2311</pre>
<p>Será exibido um aviso indicando que o gemset foi criado. Agora, utilizemo-no:</p>
<pre>rvm use 1.8.7@rails2311 --default</pre>
<p>Perceba que o comando agora indica a gemset. Traduzindo, o comando diz ao RVM para utilizar a versão 1.8.7 e o gemset rails2311. Quando o gemset não é indicado, é utilizado o padrão, &#8216;global&#8217;, que pode ser visto com o comando:</p>
<pre>rvm gemset list</pre>
<p>Se você executar o comando &#8216;which gem&#8217;, verá que o comando gem utilizado será o que é tratado pelo RVM. Instalemos a versão 2.3.11 do Rails:</p>
<pre>gem install rails -v 2.3.11</pre>
<p>Execute &#8216;gem list&#8217; e confira as gems instaladas.</p>
<pre>Agora criemos um gemset para rails 3.0.5:
rvm gemset create rails305</pre>
<pre>rvm use 1.8.7@rails305 --default</pre>
<p>Se você executar &#8216;gem list&#8217;, verá que só há o Rake instalado. Vamos instalar o Rails 3.0.5:</p>
<pre>gem install rails -v 3.0.5 --no-ri --no-rdoc</pre>
<p>O comando &#8216;gem list&#8217; mostra as gems instaladas. Perceba que as gems listadas não são as mesmas do gemset rails2311.</p>
<p>Tenho criado gemsets separadas para cada projeto, mesmo que as versões de Ruby e do Rails sejam as mesmas. Assim, o ambiente fica ainda mais controlado. Ainda, algumas vezes, apesar de termos a mesma versão do Ruby e do Rails, uma ou outra gem possui versão diferente entre projetos, ou talvez você esteja experimentando uma gem em fase alfa, beta, RC&#8230; <a title="Como utilizar o Twitter para autenticação no Rails 3 com o OAuth" href="http://gregoriomelo.com/2011/como-utilizar-o-twitter-para-autenticacao-no-rails-3-com-oauth/" target="_blank">No meu post sobre OAuth</a>, eu mantinha um gemset exclusivo para a aplicação criada, tal gemset chamado  de &#8216;twitterfriend&#8217;. Nada mais sugestivo :)</p>
<h2>Ainda melhor com o Bundler</h2>
<p>Em breve escreverei algo sobre o Bundler. Depois que aprendi sobre a fantástica combinação RVM + Bundler, o controle do ambiente de desenvolvimento nunca alcançou nível tão alto.</p>
<p>Enquanto o post não sai, não perca tempo esperando e leia sobre o Bundler:</p>
<p><a title="Bundler" href="http://gembundler.com/" target="_blank">http://gembundler.com/</a></p>
<h2>Referências</h2>
<ul>
<li><a title="RVM" href="http://rvm.beginrescueend.com" target="_blank">http://rvm.beginrescueend.com</a></li>
<li><a title="Bundler" href="http://gembundler.com/" target="_blank">http://gembundler.com/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gregoriomelo.com/2011/rvm-desenvolvimento-responsavel-em-ruby-e-rails/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Como utilizar o Twitter para autenticação no Rails 3 com o OAuth</title>
		<link>http://gregoriomelo.com/2011/como-utilizar-o-twitter-para-autenticacao-no-rails-3-com-oauth/</link>
		<comments>http://gregoriomelo.com/2011/como-utilizar-o-twitter-para-autenticacao-no-rails-3-com-oauth/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 02:23:30 +0000</pubDate>
		<dc:creator>gregoriomelo</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://gregoriomelo.com/?p=55</guid>
		<description><![CDATA[Há uma enorme quantidade de pessoas que concorda que não precisamos mais ter que criar um cadastro de usuários completo. Quase todo mundo já tem uma conta no Twitter, no Facebook, em algum serviço da Google&#8230; Vejamos como utilizar o (&#8230;)</p><p><a href="http://gregoriomelo.com/2011/como-utilizar-o-twitter-para-autenticacao-no-rails-3-com-oauth/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Há uma enorme quantidade de pessoas que concorda que não precisamos mais ter que criar um cadastro de usuários completo. Quase todo mundo já tem uma conta no Twitter, no Facebook, em algum serviço da Google&#8230; Vejamos como utilizar o OAuth para que nossa aplicação utilize o Twitter.</p>
<h2>O que é o OAuth?</h2>
<blockquote><p><strong>OAuth</strong> (Open Authorization) is an <a href="http://en.wikipedia.org/wiki/Open_standard">open standard</a> for <a href="http://en.wikipedia.org/wiki/Authorization">authorization</a>. It allows users to share their private resources (e.g. photos, videos, contact lists) stored on one site with another site without having to hand out their credentials, typically username and password.</p>
<p>Fonte: <a title="Descrição do OAuth na Wikipedia" href="http://en.wikipedia.org/wiki/Oauth" target="_blank">http://en.wikipedia.org/wiki/Oauth</a></p></blockquote>
<p>Traduzindo: OAuth é um padrão aberto para autorização que permite que usuários compartilhem fotos, vídeos, contatos, etc., de um serviço para outro serviço sem que seja necessário fornecer as credenciais novamente, como nome de usuário e senha.</p>
<h2>Quem usa</h2>
<ul>
<li>Twitter</li>
<li>Google</li>
<li>Facebook</li>
<li>Yahoo</li>
<li>MySpace</li>
<li>NetFlix</li>
<li>TripIt</li>
<li>Vimeo</li>
<li>&#8230;inúmeros outros&#8230;</li>
</ul>
<h2>Rails 3 e OAuth</h2>
<p>Comecemos, então, a criar uma aplicação que se integre com o OAuth:</p>
<pre>rails new twitterfriend</pre>
<p>Depois disso, edite o Gemfile e coloque a gem do OAuth:</p>
<pre>gem 'omniauth'</pre>
<p>E execute o Bundler para instalar a gem:</p>
<pre>bundle install</pre>
<p>Remova o index.html que vem com a aplicação e crie um controlador para gerenciar o acesso às páginas:</p>
<pre>rm public/index.html</pre>
<pre>rails g controller pages index</pre>
<p>Agora vamos configurar o roteamento para a raiz da aplicação. Edite o arquivo config/routes.rb e coloque a seguinte linha antes de &#8216;get &#8220;pages/index&#8221;&#8216;:</p>
<pre>root :to =&gt; 'pages#index'</pre>
<h2>Configurando o OAuth com o Twitter</h2>
<p>Na pasta config/initializers, cria um arquivo chamado &#8216;omniauth.rb&#8217; e coloque as seguintes linhas no seu conteúdo:</p>
<pre>Rails.application.config.middleware.use OmniAuth::Builder do</pre>
<pre>  provider :twitter, 'CONSUMER_KEY', 'CONSUMER_SECRET'</pre>
<pre>end</pre>
<p>CONSUMER_KEY e CONSUMER_SECRET são códigos que você deve obter no site <a title="Site do Twitter para desenvolvedores" href="http://dev.twitter.com/" target="_blank">http://dev.twitter.com/</a>. Procure pela opção &#8216;Register an app&#8217; e preencha o formulário.</p>
<p>No campo &#8216;Application Website&#8217;, coloque &#8220;<span style="color: #008000;">http://127.0.0.1:3000</span>&#8221; (sem aspas).</p>
<p>No campo &#8216;Application Type&#8217;, escolha &#8220;<span style="color: #008000;">Browser</span>&#8220;.</p>
<p>No campo &#8216;Callback URL&#8217;, preencha com &#8220;<span style="color: #008000;">http://127.0.0.1:3000/auth/twitter/callback</span>&#8221; (sem aspas).</p>
<p>Após a confirmação, você terá acesso aos códigos que precisa para configurar a aplicação Rails. Na página da aplicação no Twitter, procure pela seção &#8216;<span style="color: #008000;">OAuth 1.0a Settings</span>&#8216; e lá você encontrará as chaves.</p>
<h2>Colocando a autenticação na aplicação</h2>
<p>Por enquanto, nossa aplicação não tem nada de mais. Vamos colocar um link para a autenticação. Remova o conteúdo do arquivo &#8216;app/views/pages/index.html.erb&#8217; e substitua por:</p>
<pre>&lt;%= link_to "Login no Twitter", "/auth/twitter"%&gt;</pre>
<p>Vejamos como fica no navegador. Execute o comando para rodar o servidor:</p>
<pre>rails s</pre>
<p>Ao clicar no link, você será redirecionado para uma página do Twitter questionando se deve ser permitido o acesso à aplicação. Confirme. Depois disso, :( uma mensagem de erro:</p>
<pre>No route matches "/auth/twitter/callback"</pre>
<p>Mas, na verdade, não fizemos muita coisa ainda. Este erro significa que não há rota para tratar o retorno do Twitter. Precisamos criar a rota e um controller para gerenciar a sessão HTTP. Além de gerenciar o sucesso da comunicação com o Twitter, precisamos ter um tratamento para o logout e outro para o caso em que a comunicação com o Twitter falhar. Criemos o tal controller:</p>
<pre>rails g controller sessions create destroy failure</pre>
<p>E agora, a rota. Edite o arquivo config/routes.rb novamente, apague as 3 entradas get do controller sessions e inclua estas:</p>
<pre>match '/auth/twitter/callback' =&gt; 'sessions#create'</pre>
<pre>match '/auth/failure' =&gt; 'sessions#failure'</pre>
<pre>match '/logout' =&gt; 'sessions#destroy'</pre>
<p>Lembra da configuração da opção &#8216;Callback URL&#8217; na hora de cadastrar a aplicação do Twitter? A URL de callback é o endereço que deve ser acessado quando o Twitter devolver o controle para a sua aplicação. O erro que foi encontrado há pouco é justamente por isso. O Twitter retornou sucesso no login e a aplicação foi redirecionada para a URL configurada. Mas não tinha nada lá. Mas agora, tem. Vejamos novamente no navegador.</p>
<p>Pronto, melhorou! Para ficar melhor, vamos colocar o usuário na sessão. Edite o método create em &#8216;app/controllers/sessions_controller.rb&#8217; e deixe-o assim:</p>
<pre>def create</pre>
<pre>  session[:auth] = request.env['omniauth.auth']</pre>
<pre>  redirect_to root_path</pre>
<pre>end</pre>
<p>Altere também o arquivo &#8216;config/initializers/session_store.rb&#8217; e descomente a última linha. Depois disso, rode a task do rake para criar as sessões:</p>
<pre>rake db:sessions:create</pre>
<pre>rake db:migrate</pre>
<p>Fazendo isso, podemos colocar os dados do Twitter na sessão. Assim, vamos modificar a página index para que esta fique ciente que há um usuário logado.</p>
<p>Altere o conteúdo da página &#8216;app/views/pages/index.html.erb&#8217; para este:</p>
<pre>&lt;% if session[:auth] %&gt;</pre>
<pre>  Bem-vindo, &lt;%= session[:auth]['user_info']['name'] %&gt;! &lt;%= link_to 'Logout', logout_path %&gt;</pre>
<pre>&lt;% else %&gt;</pre>
<pre>  &lt;%= link_to "Login no Twitter", "/auth/twitter"%&gt;</pre>
<pre>&lt;% end %&gt;</pre>
<p>Agora sabemos se o usuário está logado. Vamos agora colocar o logout. Edite o controller &#8216;app/controllers/sessions_controller.rb&#8217; e, no método destroy, coloque o seguinte conteúdo:</p>
<pre>session[:auth] = nil</pre>
<pre>redirect_to root_path</pre>
<p>Assim, quando o usuário clicar em logout, ele será requisitado para logar no Twitter novamente.</p>
<p>Bem, não tá completo, nem temos o melhor código do mundo. Nem o teste tem aí. Porém, a intenção era mostrar como integrar o OAuth com o Rails 3. Então, o que tem aqui é o começo. E dá pra fazer muita coisa a partir daqui. Boa sorte!</p>
<h2>Github</h2>
<p>Coloquei o projeto no Github. Fique à vontade para cloná-lo:</p>
<pre>git clone git@github.com:gregoriomelo/twitterfriend.git</pre>
<h2>Referências</h2>
<p><a title="Simple OmniAuth no Railscasts.com" href="http://railscasts.com/episodes/241-simple-omniauth" target="_blank">http://railscasts.com/episodes/241-simple-omniauth</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gregoriomelo.com/2011/como-utilizar-o-twitter-para-autenticacao-no-rails-3-com-oauth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como instalar o Ruby on Rails 3 no Windows 7</title>
		<link>http://gregoriomelo.com/2011/como-instalar-o-ruby-on-rails-3-no-windows-7/</link>
		<comments>http://gregoriomelo.com/2011/como-instalar-o-ruby-on-rails-3-no-windows-7/#comments</comments>
		<pubDate>Sat, 09 Apr 2011 13:39:04 +0000</pubDate>
		<dc:creator>gregoriomelo</dc:creator>
				<category><![CDATA[Sem categoria]]></category>

		<guid isPermaLink="false">http://gregoriomelo.com/?p=50</guid>
		<description><![CDATA[A maioria dos acessos ao blog são de buscas por como instalar o Rails 3 no Windows 7. No entanto, acabam encontrando a versão 2.3 do Rails. Este post visa atender este público, os que desejam instalar o Rails 3. (&#8230;)</p><p><a href="http://gregoriomelo.com/2011/como-instalar-o-ruby-on-rails-3-no-windows-7/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>A maioria dos acessos ao blog são de buscas por como instalar o Rails 3 no Windows 7. No entanto, acabam encontrando a versão 2.3 do Rails. Este post visa atender este público, os que desejam instalar o Rails 3. Comecemos conhecendo o roteiro:</p>
<ol>
<li>Instalar o Ruby</li>
<li>Atualizar o RubyGems</li>
<li>Instalar o Rails 3</li>
<li>Instalar o MySQL (opcional)</li>
<li>Instalar o SQLite3 (opcional)</li>
</ol>
<h2>Passo 1: Instalar o Ruby</h2>
<p>Basta baixar o <a title="RubyInstaller" href="http://rubyinstaller.org/download.html" target="_blank">RubyInstaller</a> e mandar bala. O RubyInstaller pode ser encontrado aqui: <a title="RubyInstaller" href="http://rubyinstaller.org/download.html" target="_blank">http://rubyinstaller.org/download.html</a>. Digo que é mais simples porque não precisaremos compilar o código fonte e instalá-lo&#8230; Enquanto escrevo, as versões disponíveis para instalação do Ruby eram 1.8.7 e 1.9.2. <strong>Evite instalar o Ruby em uma pasta que contenha espaços</strong>, uma vez que isto pode trazer bastantes problemas.</p>
<p>Agora vamos colocar o Ruby no PATH do Windows. Procure, no Painel de Controle, pela tela de Propriedades do Sistema. Nesta tela, clique em &#8216;Variáveis de ambiente&#8217; e, no bloco &#8216;Variáveis de sistema&#8217;, procure pela variável &#8216;Path&#8217; e coloque no fim do campo valor o seguinte texto (não esqueça do ponto-e-vírgula) e confirme:</p>
<p>;C:\Ruby187\bin</p>
<p>Teste a instalação com o seguinte comando no prompt de comando:</p>
<pre lang="Bash">ruby -v</pre>
<h2>Passo 2: Atualizar o Ruby Gems</h2>
<p>Gems é o sistema de gerenciamento de pacotes utilizado pelo Ruby. Execute o seguinte comando para atualizar o Ruby Gems:</p>
<pre lang="Bash">gem update --system</pre>
<p>Deve levar uns minutinhos pra terminar.</p>
<h2>Passo 3: Instalar o Rails</h2>
<p>Enfim, chegou a hora de instalar o Rails. Novamente, no prompt de comando, digite o seguinte comando:</p>
<pre lang="bash">gem install rails --no-ri --no-rdoc</pre>
<p>Vai demorar um bocado. Aproveite o tempo pra dar uma olhada no que pode ser feito com Rails. Recomendo o guia do Rails (<a title="Guia do  rails" href="http://guides.rubyonrails.org/" target="_blank">http://guides.rubyonrails.org</a>).</p>
<p>Pronto! Agora você já tem o suficiente para começar a programar! :) Na verdade, falta um banco de dados&#8230;</p>
<h2>Passo 4: Instalar o MySQL</h2>
<p>Instalar o MySQL é simples. Basa ir ao site <a title="MySQL" href="http://mysql.com/" target="_blank">mysql.com</a>, baixar e instalar a versão mais recente. Simples de fazer e utilizar. Uma grande vantagem em usar o MySQL é o conjunto de ferramentas que dão suporte ao MySQL. Para quem não deseja utilizar o MySQL, o SQLite é uma boa saída.</p>
<h2>Passo 5: Instalar o SQLite</h2>
<p>Apesar de o Rails 2.3 estar configurado por padrão para utilizar o SQLite, é preciso instalar o ambiente para que funcione, já que nem o Windows nem o Rails trazem o SQLite consigo. Caso você decida utilizar o SQLite como sistema gerenciador de banco de dados (SGBD) da sua aplicação, será preciso copiar alguns arquivos para o diretório <em>bin</em> onde o Ruby foi instalado, por exemplo, C:\Ruby187\bin\. Vá ao site <a title="SQLite" href="http://www.sqlite.org/download.html" target="_blank">sqlite.com</a> e baixe os arquivos binários para Windows. Um se chama mais ou menos &#8216;sqlite-shell-win32-x86-3070500.zip&#8217; e ou outro &#8217;sqlite-dll-win32-x86-3070500.zip&#8217;. O primeiro arquivo contém um executável (.exe) utilizado para a manutenção do banco de dados (INSERT, UPDATE, CREATE, DROP, entre outros). O segundo arquivo possui um arquivo .def e uma DLL utilizada pelo Ruby quando o Rails faz chamadas ao banco de dados. Copie os três arquivos (.exe, .def e .dll) para a pasta bin onde o Ruby foi instalado.</p>
<p>Sua aplicação estará pronta para ser executada com o SQLite! Recomendo a extensão do Firefox &#8220;SQLite Manager&#8221; como cliente do banco. Quebra um ótimo galho :)</p>
<h2>Fontes</h2>
<ul>
<li><a title="Como instalar o Ruby on Rails 2.3 no Windows 7" href="http://gregoriomelo.com/2010/instalando-o-ruby-on-rails-2-3-no-windows-7/" target="_blank">http://gregoriomelo.com/2010/instalando-o-ruby-on-rails-2-3-no-windows-7/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gregoriomelo.com/2011/como-instalar-o-ruby-on-rails-3-no-windows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

