<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkMGR30zfSp7ImA9WhdUEk4.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386</id><updated>2011-09-28T11:27:06.385-07:00</updated><category term="Off-Topic" /><category term="Opinião" /><category term="Plugins" /><category term="Sockets em Ruby" /><category term="Ruby on Rails" /><category term="Ruby" /><category term="Noticias" /><title>Casa Open</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.casaopen.com.br/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/casaopen" /><feedburner:info uri="casaopen" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>casaopen</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;DEIGQHs6fip7ImA9Wx9UFE8.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-223724582856480952</id><published>2011-02-11T04:13:00.000-08:00</published><updated>2011-02-11T04:15:21.516-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-11T04:15:21.516-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Noticias" /><title>Você "vai" ao Ruby Masters Conf?</title><content type="html">&lt;div style="text-align: center;"&gt;&lt;a href="http://rubymastersconf.com/" target="_blank"&gt;&lt;img height="175" src="http://rubymastersconf.com/images/banner-02.png" title="Ruby Masters Conf - Edição 2011" width="270" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A Ruby Masters Conf foi uma das iniciativas mais legais que vi&amp;nbsp;recentemente&amp;nbsp;na comunidade Ruby. Ela se trata de um conjunto de palestras &amp;nbsp;que serão transmitidas on-line nos dias 25 e 26 de fevereiro de 2011 onde toda a renda será revertida para dois projetos: o &lt;a href="http://rubyinstaller.org/"&gt;RubyInstaller&lt;/a&gt; - &amp;nbsp;que é uma ferramenta usada para instalar o ambiente necessário para o Ruby no Windows - e o&amp;nbsp;&lt;a href="http://modrails.com/"&gt;Passenger&lt;/a&gt;&amp;nbsp;- que mudou a forma da comunidade&amp;nbsp;administrar um cluster de Mongrels ou gerenciar processos FastCGI.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para participar, basta fazer sua inscrição no&amp;nbsp;&lt;a href="http://rubymastersconf.com/"&gt;RubyMastersConf.com&lt;/a&gt;&amp;nbsp;por um valor&amp;nbsp;simbólico&amp;nbsp;acima de R$35,00. Após a inscrição, é só esperar por ótimas palestras de pessoas muito conceituadas no mundo Ruby, como por exemplo:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://akitaonrails.com/"&gt;Fábio Akita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://davidchelimsky.net/"&gt;David Chelimsky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cassiomarques.wordpress.com/"&gt;Cássio Marques&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://fabiokung.com/"&gt;Fábio Kung&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;E ai? Nos "encontraremos" na Ruby Masters Conf?&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" class="youtube-player" frameborder="0" height="349" src="http://www.youtube.com/embed/2RQKUEFLtcM" title="YouTube video player" type="text/html" width="425"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Saiba&amp;nbsp;mais visitando o site&amp;nbsp;&lt;a href="http://rubymastersconf.com/"&gt;RubyMastersConf.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-223724582856480952?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/223724582856480952/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2011/02/voce-vai-ao-ruby-masters-conf.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/223724582856480952?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/223724582856480952?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/d8A3nEvylvw/voce-vai-ao-ruby-masters-conf.html" title="Você &quot;vai&quot; ao Ruby Masters Conf?" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/2RQKUEFLtcM/default.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.casaopen.com.br/2011/02/voce-vai-ao-ruby-masters-conf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4HQH0-cSp7ImA9Wx9VEUk.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-7157807009793454455</id><published>2011-01-27T09:40:00.000-08:00</published><updated>2011-01-27T08:15:31.359-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-27T08:15:31.359-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Noticias" /><title>Um ano de Casa Open</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_mK4DEqf4UXw/TT20D6MT7sI/AAAAAAAAAjo/E_pOvg7BW8E/s1600/1%252Bano%252BCasaOpen.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_mK4DEqf4UXw/TT20D6MT7sI/AAAAAAAAAjo/E_pOvg7BW8E/s400/1%252Bano%252BCasaOpen.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Este é um dia muito especial para mim pois há um ano atrás o primeiro post,&amp;nbsp;intitulado&amp;nbsp;&lt;a href="http://www.casaopen.com.br/2010/01/ruby-on-rails-vs-java.html"&gt;Ruby on Rails vs Java&lt;/a&gt;, do blog, que antigamente chamava-se railsopen.blogspot.com, foi ao ar. Desde então, muita coisa mudou: alterei o layout, o domínio (veja esse &lt;a href="http://www.casaopen.com.br/2010/03/de-casa-nova.html"&gt;post&lt;/a&gt;)... mas o que permanece é o foco: &lt;b&gt;Ruby e Rails&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Sim, aprendi&amp;nbsp;muito, errei alguns vezes, conhece pessoas e cresci. Bom, mas para comemorar essa data especial separei os 10 artigos mais lidos deste primeiro ano do &lt;a href="http://www.casaopen.com.br/"&gt;Casa Open&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.casaopen.com.br/2010/03/explore-o-mundo-em-360-graus.html"&gt;Explore o mundo em 360 graus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.casaopen.com.br/2010/01/arquivos-em-ruby.html"&gt;Arquivos em Ruby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.casaopen.com.br/2010/01/documentacao-ruby-on-rails.html"&gt;Documentação Ruby on Rails&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.casaopen.com.br/2010/02/graficos-em-rails-css-graphs.html"&gt;Gráficos no Rails - CSS Graphs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.casaopen.com.br/2010/02/e-mail-para-varios-destinatarios.html"&gt;E-mail para vários destinatários&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.casaopen.com.br/2010/02/traduzir-calendario.html"&gt;Traduzindo datas no Rails&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.casaopen.com.br/2010/03/operador-ternario-e-ruby.html"&gt;Operador ternário e Ruby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.casaopen.com.br/2010/09/tipagem-em-ruby.html"&gt;Tipagem em Ruby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.casaopen.com.br/2010/12/sockets-em-ruby.html"&gt;Sockets em Ruby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.casaopen.com.br/2010/01/ruby-on-rails-vs-java.html"&gt;Ruby on Rails vs Java&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Também não poderia deixar de agradecer aos leitores, aos que fazem comentários, aos assinantes do &lt;a href="http://feeds.feedburner.com/casaopen"&gt;feed&lt;/a&gt;, os seguidores do &lt;a href="http://twitter.com/samuel_vinicius"&gt;twitter&lt;/a&gt; e a todos que de alguma forma fazem o blog evoluir. Obrigado!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-7157807009793454455?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/7157807009793454455/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2011/01/um-ano-de-casa-open.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/7157807009793454455?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/7157807009793454455?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/1pmgWzcRLZ0/um-ano-de-casa-open.html" title="Um ano de Casa Open" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_mK4DEqf4UXw/TT20D6MT7sI/AAAAAAAAAjo/E_pOvg7BW8E/s72-c/1%252Bano%252BCasaOpen.JPG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.casaopen.com.br/2011/01/um-ano-de-casa-open.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQGR3k7fSp7ImA9Wx9XEk8.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-6069395451566752134</id><published>2011-01-05T02:12:00.000-08:00</published><updated>2011-01-05T02:12:06.705-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-05T02:12:06.705-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Off-Topic" /><title>Os railers e suas músicas</title><content type="html">&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;Em quase todos os grandes eventos de Ruby e Rails estamos tendo o privilegio imensurável de desfrutarmos do talento musical dos railers. Como sou uma boa pessoa, não irei privá-lo destes momentos inusitados...&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;...deixando de lado a ironia, realmente é muito bom ouvir música nos eventos e as que você verá nos próximos vídeos são ótimas!&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Regaae do Node&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 12px;"&gt;Apresentado na RubyConf Brasil 2010.&lt;br /&gt;
By &lt;a href="http://www.twitter.com/danicuki"&gt;@danicuki&lt;/a&gt;, &lt;a href="http://www.twitter.com/luizfaias"&gt;@luizfaias&lt;/a&gt;, &lt;a href="http://www.twitter.com/ucoaaa"&gt;@ucoaaa&lt;/a&gt;&amp;nbsp;e&amp;nbsp;&lt;a href="http://www.twitter.com/andrefaria"&gt;@andrefaria&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 12px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/VY67k6NHfTs?fs=1&amp;amp;hl=pt_BR"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/VY67k6NHfTs?fs=1&amp;amp;hl=pt_BR" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Melô do Teste Automatizado e Samba do Akita&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 12px;"&gt;Melô do Teste Automatizado e Samba do Akita apresentado no Rails Summit 2009 por Daniel Cukier&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4T4Yw9hctfc?fs=1&amp;amp;hl=pt_BR"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/4T4Yw9hctfc?fs=1&amp;amp;hl=pt_BR" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h1 id="watch-headline-title" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-size: 1,8333em; font-weight: bold; height: 1,1363em; line-height: 1,1363em; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 0px; max-height: 1,1363em; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="" dir="ltr" id="eow-title" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 22px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Forro do Elomar"&gt;Forro do Elomar&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;&lt;span class="" dir="ltr" id="eow-title" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Forro do Elomar"&gt;Forro do Elomar no Oxente Rails em 2010&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uhFXtA2ngeo?fs=1&amp;amp;hl=pt_BR"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/uhFXtA2ngeo?fs=1&amp;amp;hl=pt_BR" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-6069395451566752134?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/6069395451566752134/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2011/01/os-railers-e-suas-musicas.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/6069395451566752134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/6069395451566752134?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/NEbSDfp6cwA/os-railers-e-suas-musicas.html" title="Os railers e suas músicas" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2011/01/os-railers-e-suas-musicas.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMERX04cCp7ImA9Wx9QE0s.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-1009697804687752358</id><published>2010-12-26T04:43:00.000-08:00</published><updated>2010-12-26T04:43:24.338-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-26T04:43:24.338-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Noticias" /><title>Retrospectiva 2010</title><content type="html">Antes de qualquer coisa desejo,&amp;nbsp;sinceramente,&amp;nbsp;a todos os leitores um ótimo 2011. Que seja um ano excelente&amp;nbsp;profissionalmente&amp;nbsp;e pessoalmente. Me vejo também no dever de agradecê-los pelas críticas, elogios e pelos comentários - são eles que me dão forças para continuar.&lt;br /&gt;
&lt;br /&gt;
Salvo os devidos agradecimentos, vamos ao que interessa.&amp;nbsp;Este foi um ótimo ano pra mim e para o blog Casa Open. Foi o ano de estreia do Blog, e tudo que é novo, é especial. Mas para evitar o muito falar, vejam um resumo sobre os artigos mais interessantes - segundo os meus olhos - que aqui foram publicados.&lt;br /&gt;
&lt;br /&gt;
Janeiro&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/01/ruby-on-rails-vs-java.html"&gt;Ruby on Rails vs Java&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/01/arquivos-em-ruby.html"&gt;Arquivos em Ruby&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Fevereiro&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/02/graficos-em-rails-css-graphs.html"&gt;Gráficos no Rails - CSS Graphs&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/02/traduzir-calendario.html"&gt;Traduzindo datas no Rails&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/02/lendo-urls-no-ruby.html"&gt;Lendo URL's no Ruby&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Março&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/03/operador-ternario-e-ruby.html"&gt;Operador ternário e Ruby&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/03/working-with-rails-ultrapassa-marca-de.html"&gt;Working with Rails ultrapassa a marca de 17000 programadores&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Abril&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/04/tarefas-em-background-delayed-job.html"&gt;Tarefas em background - delayed job&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/04/precedencia-em-operadores-logicos.html"&gt;Precedência em operadores lógicos&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Maio&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/04/precedencia-em-operadores-logicos.html"&gt;Interpretador Ruby Online&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Junho&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/06/em-qual-ambiente-estamos.html"&gt;Em qual ambiente estamos?&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Julho&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/07/project-euler-1.html"&gt;Project Euler #1&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/07/teste-suas-expressoes-regulares-online.html"&gt;Teste suas expressões regulares na web&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Agosto&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/08/progzoonet-comparando-as-linguagens-de.html"&gt;progzoo.net: Comparando as linguagens de programação&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Setembro&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/09/retirando-excecao-invalidauthenticityto.html"&gt;Retirando a exceção InvalidAuthenticityToken&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/09/tipagem-em-ruby.html"&gt;Tipagem em Ruby&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Outubro&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/10/respostas-http.html"&gt;Respostas HTTP&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/10/rubyconf-brasil.html"&gt;RubyConf Brasil 2010&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Novembro&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/11/captura-de-codigo-ascii-no-ruby.html"&gt;Captura de código &amp;nbsp;ASCII no Ruby&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Dezembro&lt;br /&gt;
&lt;a href="http://www.casaopen.com.br/2010/12/sockets-em-ruby.html"&gt;Sockets em Ruby&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
No mais, tenham um bom final de ano e um 2011 melhor ainda!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-1009697804687752358?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/1009697804687752358/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/12/retrospectiva-2010.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/1009697804687752358?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/1009697804687752358?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/DssaCIQcQNY/retrospectiva-2010.html" title="Retrospectiva 2010" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/12/retrospectiva-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QBQXo8fSp7ImA9Wx9RFE8.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-747926512786391771</id><published>2010-12-15T05:49:00.000-08:00</published><updated>2010-12-15T05:55:50.475-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-15T05:55:50.475-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="Sockets em Ruby" /><title>Sockets em Ruby</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_mK4DEqf4UXw/TQjEZRy9ytI/AAAAAAAAAgE/ZltnHtgfAuI/s1600/Sockets%252BRuby.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/TQjEZRy9ytI/AAAAAAAAAgE/ZltnHtgfAuI/s400/Sockets%252BRuby.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Este é primeiro de vários artigos que irei publicar sobre Sockets em Ruby. Mas antes de qualquer coisa, é conveniente dizer &lt;b&gt;o que são Sockets:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;i&gt;A grosso modo, são as extremidades de um canal de comunicação bidirecional. Ou seja, você pode utilizar Sockets para fazer comunicação entre processos de uma maquina, entre maquinas diferentes e entre processos de maquinas diferentes.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;O que iremos fazer?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Como este é o primeiro  artigo sobre o tema, pretendo ir direto ao ponto, mostrando, de forma simples, como implementar uma aplicação Cliente-Servidor. Nesta aplicação o cliente envia uma mensagem para o servidor e este responde. Sendo a comunicação entre cliente e servidor realizada via Socket através do protocolo TCP.&lt;br /&gt;
Então, sem mais delongas, vamos aos códigos:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Servidor&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;# file server.rb
require 'socket' 

server = TCPServer.open(3001)  # Abre socket em escuta na porta 3001  
loop { # o servidor nunca morre, fica sempre executando
  client = server.accept      # aceita conexão do cliente
  msg_cliente = client.recvfrom( 10000 ) # recebe mensagem - 10000 bytes - do cliente

  puts  "Mensagem do cliente: #{msg_cliente}" # imprime a mensagem do cliente no servidor
  client.puts "Ola cliente eu, o servidor, recebi sua mensagem" #envia uma mensagem ao cliente    
  client.close # fecha conexão
}
&lt;/pre&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Cliente&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;pre class="cod"&gt;# file client.rb
require 'socket'

server = TCPSocket.open('localhost', 3001) # conecta ao servidor na porta 3001
server.puts "Ola servidor eu, o cliente, estou enviando uma mensagem" # envia mensagem para o servidor

resp = server.recvfrom( 10000 ) # recebe a mensagem -10000 bytes - do servidor
puts resp

server.close # Fecha a conexão com o servidor
&lt;/pre&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Como rodar a aplicação?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Primeiro salve o código do servidor em um arquivo .rb - por exemplo server.rb - e execute o arquivo - ruby server.rb. Neste ponto o servidor está esperando a conexão de um cliente. Agora salve o código do cliente de forma análoga e execute em outro terminal de modo que cliente e servidor sejam rodados ao mesmo tempo. A partir de então o cliente envia uma mensagem ao servidor e o servidor responde.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Conclusões&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Este é um exemplo simples do que pode ser feito com Sockets, espero que te ajude em algo.&lt;br /&gt;
&lt;br /&gt;
Referência&lt;br /&gt;
&lt;a href="http://www.tutorialspoint.com/ruby/ruby_socket_programming.htm"&gt;http://www.tutorialspoint.com/ruby/ruby_socket_programming.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-747926512786391771?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/747926512786391771/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/12/sockets-em-ruby.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/747926512786391771?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/747926512786391771?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/K3gQdcc75NE/sockets-em-ruby.html" title="Sockets em Ruby" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_mK4DEqf4UXw/TQjEZRy9ytI/AAAAAAAAAgE/ZltnHtgfAuI/s72-c/Sockets%252BRuby.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/12/sockets-em-ruby.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcMSX8zeCp7ImA9Wx9SEU8.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-2739632112968636183</id><published>2010-11-30T04:24:00.000-08:00</published><updated>2010-11-30T04:28:08.180-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-30T04:28:08.180-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title>Captura de código  ASCII no Ruby</title><content type="html">Existem vários modos para capturar os código ASCII dos caracteres em Ruby, vejamos alguns deles:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;puts ?R, ?u, ?b, ?y&lt;/pre&gt;&lt;pre class="cod"&gt;puts "R"[0], "u"[0], "b"[0], "y"[0]&lt;/pre&gt;&lt;pre class="cod"&gt;"Ruby".each_byte { |x| p x}&lt;/pre&gt;&lt;br /&gt;
Mas se você&amp;nbsp;preferir fazer o caminho inverso, este método resolve:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;&amp;nbsp;puts 82.chr, 117.chr, 98.chr, 121.chr&lt;/pre&gt;&lt;br /&gt;
Referência:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://en.wikibooks.org/wiki/Ruby_Programming/ASCII"&gt;http://en.wikibooks.org/wiki/Ruby_Programming/ASCII1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-2739632112968636183?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/2739632112968636183/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/11/captura-de-codigo-ascii-no-ruby.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/2739632112968636183?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/2739632112968636183?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/tZlR2TqrCP0/captura-de-codigo-ascii-no-ruby.html" title="Captura de código  ASCII no Ruby" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/11/captura-de-codigo-ascii-no-ruby.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YCSHcyfyp7ImA9Wx5bFkw.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-993796589947148370</id><published>2010-10-31T18:39:00.000-07:00</published><updated>2010-11-01T04:32:49.997-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-01T04:32:49.997-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Noticias" /><title>RubyConf Brasil</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_mK4DEqf4UXw/TM3MU7_RzsI/AAAAAAAAAdw/nxIfhAzXj1I/s1600/Imagem0962.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_mK4DEqf4UXw/TM3MU7_RzsI/AAAAAAAAAdw/nxIfhAzXj1I/s400/Imagem0962.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Dois dias intensos de Ruby em São Paulo onde mais de 700 pessoas tiveram o privilegio de conhecer um pouco mais deste mundo que a muitos fascinam. Por lá estive e deixo aqui alguns dos meus pensamentos sobre o evento.&lt;br /&gt;
&lt;br /&gt;
A RubyConf Brasil foi algo que realmente vai deixar saudades, um evento onde pessoas de peso marcaram presença, onde o nível dos palestrantes e palestras foram altíssimos. Estes fatos, sem dúvida, deixam a comunidade cada dia mais orgulhosa de se e dos seus feitos.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_mK4DEqf4UXw/TM4RMXvwkTI/AAAAAAAAAd0/1GoyZM1gdus/s1600/Imagem0972.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/_mK4DEqf4UXw/TM4RMXvwkTI/AAAAAAAAAd0/1GoyZM1gdus/s200/Imagem0972.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Eu e muitos mineiros fomos. Se você foi, garanto que viu alguém com a camisa do grupo &lt;a href="http://railsmg.org/" target="_blank"&gt;Rails-MG&lt;/a&gt;. Nisto agradeço ao Gabriel Sobrinho - &lt;a href="http://www.twitter.com/sobrinho" target="_blank"&gt;@sobrinho&lt;/a&gt;, que arrumou uma correria para disponibilizar as camisas à todos integrantes do grupo.&lt;br /&gt;
&lt;br /&gt;
Como disse anteriormente, o nível das palestras foi sensacional, mas dentre estas irei falar especialmente de três:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;palestra: Desenvolvimento de Aplicações Sociais com Rails&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Carlos Brando falou sobre suas experiências no desenvolvimento de aplicações para software social em sistemas como Open Social - Orkut - e FaceBook. Ele mostrou uma forma prática, produtiva e sustentável para desenvolver aplicações sociais em Rails. Sendo a única coisa ruim a notícia de que o framework &amp;nbsp;que facilita o desenvolvimento destas aplicações que o Carlos anda trabalhando não terá o código fonte aberto, pois foi vendido.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Palestra: Integrando o iPhone com Ruby on Rails + Geração de gráficos com Ruby on Rails&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
Essa palestra realmente me impressionou, Pedro Franceschi, de apenas 13 anos que já impactou o mundo dos iPhones - desbloqueando vários deles, mostrou que idade não é documento palestrando sobre seus conhecimentos em RoR.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_mK4DEqf4UXw/TM4RtVwB1RI/AAAAAAAAAd4/xXHJb9g_lR4/s1600/Imagem0968.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="150" src="http://2.bp.blogspot.com/_mK4DEqf4UXw/TM4RtVwB1RI/AAAAAAAAAd4/xXHJb9g_lR4/s200/Imagem0968.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Palestra: JRuby: O Melhor dos Dois Mundos&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
Charles Nutter, mostrou de modo prático como integrar o mundo Java e Ruby. Um ótimo ponto dessa palestra foram as demonstrações desta integração, como por exemplo o uso de bibliotecas gráficas do Java no Ruby, e o humor de Charles.&lt;br /&gt;
&lt;br /&gt;
Esta foi a primeira, de muitas, RubyConf Brasil. Deixo minhas gratificações a todos que contribuíram para o evento em especial ao &lt;a href="http://akitaonrails.com/" target="_blank"&gt;Fabio Akita&lt;/a&gt; e aos patrocinadores: &lt;a href="http://www.gonow.com.br/" target="_blank"&gt;Go Now&lt;/a&gt;, &lt;a href="http://www.thoughtworks.com/" target="_blank"&gt;thoughtworks&lt;/a&gt;, &lt;a href="http://www.caelum.com.br/"&gt;Caelum&lt;/a&gt;, &lt;a href="http://www.engineyard.com/" target="_blank"&gt;Engine Yard&lt;/a&gt;, &lt;a href="http://www.paypal.com.br/" target="_blank"&gt;Pay Pal&lt;/a&gt;&amp;nbsp;e &lt;a href="http://www.infoq.com/br/" target="_blank"&gt;Infoq&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Mural RubyConf Brasil&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_mK4DEqf4UXw/TM4VFEDTPSI/AAAAAAAAAd8/2-aPqWlhe2U/s800/Imagem0971.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_mK4DEqf4UXw/TM4VFEDTPSI/AAAAAAAAAd8/2-aPqWlhe2U/s400/Imagem0971.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_mK4DEqf4UXw/TM4V07vqtuI/AAAAAAAAAeA/z7YhShtvyD4/s1600/Imagem0973.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_mK4DEqf4UXw/TM4V07vqtuI/AAAAAAAAAeA/z7YhShtvyD4/s400/Imagem0973.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-993796589947148370?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/993796589947148370/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/10/rubyconf-brasil.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/993796589947148370?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/993796589947148370?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/9vs1icEzdfM/rubyconf-brasil.html" title="RubyConf Brasil" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_mK4DEqf4UXw/TM3MU7_RzsI/AAAAAAAAAdw/nxIfhAzXj1I/s72-c/Imagem0962.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/10/rubyconf-brasil.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIFQ3o-eSp7ImA9Wx5bEEw.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-8524680557042519180</id><published>2010-10-25T05:39:00.000-07:00</published><updated>2010-10-25T05:41:52.451-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-25T05:41:52.451-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title>Respostas HTTP</title><content type="html">&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; line-height: 19px; white-space: normal;"&gt;Quando fazemos uma requisição na Web, o servidor busca o que está sendo requisitado e envia uma resposta para quem fez a requisição. Esta resposta pode ser dos seguintes tipos:&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; font-size: 12px; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; font-size: 12px; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; font-size: 12px; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; font-size: 12px; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; font-size: 12px; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; font-size: 12px; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; font-size: 12px; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; font-size: 12px; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;1XX: informativas;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;2XX: indicam sucesso;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;3XX: referem-se a um redirecionamento;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;4XX: indicam erros ocorridos no cliente;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;5XX:&amp;nbsp;indicam erros no servidor.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Mas como obter estas respostas através do Ruby? O seguinte código responde à essa pergunta:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; font-size: 12px; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: arial, 'bitstream vera sans', helvetica, sans-serif; line-height: 19px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="cod"&gt;require 'net/http' 
&amp;nbsp; resposta = Net::HTTP.get_response(URI.parse("http://www.casaopen.com.br/"))
&amp;nbsp; puts resposta.code&amp;nbsp; # retorna qual foi a resposta a requisição HTTP. Ex: 200, 400...
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
Mas como você não quer problemas caso a URL os tenha, isso ajuda:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;require 'net/http' 
begin
&amp;nbsp; resposta = Net::HTTP.get_response(URI.parse("http://www.casaopen.com.br/"))
&amp;nbsp; puts resposta.code&amp;nbsp; # retorna qual foi a resposta a requisição HTTP. Ex: 200, 400...
rescue =&amp;gt; ret&amp;nbsp;&amp;nbsp; # TimeoutError #&amp;nbsp; Net::HTTP.SocketError,
&amp;nbsp; puts&amp;nbsp; "Erro: #{resposta}"
end&amp;nbsp;&amp;nbsp; &lt;/pre&gt;&lt;br /&gt;
Para maiores informações, veja a documentação do &lt;a href="http://ruby-doc.org/core/classes/Net/HTTP.html" target="_blank"&gt;Ruby&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-8524680557042519180?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/8524680557042519180/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/10/respostas-http.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/8524680557042519180?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/8524680557042519180?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/QBmdODxgPdc/respostas-http.html" title="Respostas HTTP" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/10/respostas-http.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4GSXk7eSp7ImA9Wx5WEkU.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-6279974170607701688</id><published>2010-09-23T17:25:00.000-07:00</published><updated>2010-09-23T17:25:28.701-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-23T17:25:28.701-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title>Tipagem em Ruby</title><content type="html">Cada linguagem de programação tem sua forma de lidar com tipos, por exemplo: C é uma linguagem fracamente tipada. O que pode ser visto nesse exemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;&amp;nbsp;&amp;nbsp;char a= 'a', b='b';
&amp;nbsp;&amp;nbsp;float c = a + b;
&lt;/pre&gt;&lt;br /&gt;
Exemplo este que mostra o fato de podermos somar dois chars e atribuirmos a um float.&lt;br /&gt;
[ Ao longo do texto o conceito de fracamente tipada ficará mais claro. ]&lt;br /&gt;
&lt;br /&gt;
No entanto, Ruby é dinamicamente, implicitamente e fortemente tipada. Vejamos o que cada um destes adjetivos significam:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Dinamicamente tipada&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Quer dizer que, a cada interação, o tipo é verificado. Isso fica claro no seguinte exemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;x = 100
(1..4).each{ x = x * 100 ; &amp;nbsp;puts "#{ x.class} #{x}" &amp;nbsp;}
&lt;/pre&gt;&lt;br /&gt;
Que gera o resultado:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;Fixnum 10000
Fixnum 1000000
Fixnum 100000000
Bignum 10000000000
&lt;/pre&gt;&lt;br /&gt;
Como podemos ver a variável x começa como Fixnum e conforme aumenta passa para Bignum sem a necessidade de uma conversão.&lt;br /&gt;
&lt;br /&gt;
Essa característica gera vários pontos positivos na linguagem, tais como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Diminui a verbosidade, pois não há a necessidade de fazer conversões;&lt;/li&gt;
&lt;li&gt;Tende a facilitar a vida do programador pois não há a preocupação com conversões.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Mas neste contexto nem tudo são flores, vejamos os pontos negativos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;A linguagem tende a ser mais lenta, em tempo de execução, devido ao fato de que, a cada interação, o tipo ser verificado;&lt;/li&gt;
&lt;li&gt;Pode confundir o programador pois o mesmo pode não saber exatamente com quais tipos está tratando.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Implicitamente tipada&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Continuando no mesmo exemplo, quando fizemos x = 100 não precisamos declarar o tipo de x. Ou seja, não foi necessário fazer algo como: Fixnum x = 100. Isso acontece pelo fato do Ruby detectar o tipo de cada variável em tempo de execução. Uma boa analogia para este fenômeno é pensar nas variáveis como se fossem caixas fechadas e seus dados como fitas coloridas onde o interpretador abre a caixa e verifica as cores das fitas.&lt;br /&gt;
&lt;br /&gt;
Novamente, os pontos positivos e negativos são muito semelhantes aos relacionados a tipagem dinâmica. Veja:&lt;br /&gt;
&lt;br /&gt;
Positivos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Diminui a verbosidade, pois não há a necessidade de fazer declarações.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Negativos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;A linguagem tende a ser mais lenta pois o tipo é verificado em tempo de execução de acordo com a analogia das caixas e fitas;&lt;/li&gt;
&lt;li&gt;Pode confundir o programador pois o mesmo pode não saber exatamente com quais tipos está tratando já que não existe a declaração dos mesmos.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Fortemente tipada&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Este é um conceito confuso, mas uma boa forma de explica-lo é dizendo que &amp;nbsp;todas as variáveis devem ter um tipo - ou seja: fazer parte de uma classe no caso do Ruby - e que &amp;nbsp;cada tipo segue a risca seu contrato. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;a = 100
b = "Ruby on Rails"
a + b

TypeError: String can't be coerced into Fixnum
&amp;nbsp;&amp;nbsp; &amp;nbsp;from (irb):54:in `+'
&amp;nbsp;&amp;nbsp; &amp;nbsp;from (irb):54
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Como você notou, em Ruby não podemos somar um String com Fixnum pois essa operação não está no contrato da classe String e Fixnum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De fato, o assunto não acaba por aqui, existem alguns materiais na Web e em Livros sobre isso. Em vista disso, e no intuito de incentivar a pesquisa, deixo algumas referencias e até a próxima!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codecommit.com/blog/ruby/adding-type-checking-to-ruby"&gt;codecommit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rubyfleebie.com/ruby-is-dynamically-and-strongly-typed/"&gt;rubyfleebie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
P.S. Os tipos em Ruby na verdade são classes, ou seja: não existem tipos primitivos e sim objetos que pertencem a classes. Ex.:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;a = 1 # a pertence a classe Fixnum
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-6279974170607701688?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/6279974170607701688/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/09/tipagem-em-ruby.html#comment-form" title="7 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/6279974170607701688?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/6279974170607701688?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/t7xuO27ohRw/tipagem-em-ruby.html" title="Tipagem em Ruby" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>7</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/09/tipagem-em-ruby.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYDSX48eip7ImA9Wx5XEEk.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-6395532953630243579</id><published>2010-09-09T07:22:00.000-07:00</published><updated>2010-09-09T07:22:58.072-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-09T07:22:58.072-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><title>Retirando a exceção InvalidAuthenticityToken</title><content type="html">&lt;div class="western" style="font-style: normal; font-weight: medium; margin-bottom: 0cm; orphans: 2; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Já tentou enviar formulários fora da sua aplicação? Se sim, certamente você teve problemas!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="font-style: normal; font-weight: medium; margin-bottom: 0cm; orphans: 2; widows: 2;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="western" style="font-style: normal; font-weight: medium; margin-bottom: 0cm; orphans: 2; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Esses problemas se devem ao fato de que o Rails 2 insere o campo “authenticity_token” nos formulários no intuito de não permitir envios de forms por terceiros.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="font-style: normal; font-weight: medium; margin-bottom: 0cm; orphans: 2; widows: 2;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="western" style="font-style: normal; font-weight: medium; margin-bottom: 0cm; orphans: 2; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Mas se desejar receber tais envios basta colocar:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;pre class="cod"&gt;self.allow_forgery_protection = false
&lt;/pre&gt;&lt;br /&gt;
&lt;div class="western" style="font-style: normal; font-weight: medium; margin-bottom: 0cm; orphans: 2; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;no controller desejado.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="font-style: normal; font-weight: medium; margin-bottom: 0cm; orphans: 2; widows: 2;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-6395532953630243579?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/6395532953630243579/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/09/retirando-excecao-invalidauthenticityto.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/6395532953630243579?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/6395532953630243579?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/DFbyveZOKmk/retirando-excecao-invalidauthenticityto.html" title="Retirando a exceção InvalidAuthenticityToken" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/09/retirando-excecao-invalidauthenticityto.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQDSX04eCp7ImA9Wx5REEg.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-9122008174429546054</id><published>2010-08-17T07:12:00.000-07:00</published><updated>2010-08-17T07:12:58.330-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-17T07:12:58.330-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Noticias" /><title>progzoo.net: Comparando as linguagens de programação</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;&lt;span style="font-style: normal;" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;O&amp;nbsp;&lt;/span&gt;&lt;a href="http://progzoo.net/"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;progzoo.net&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;é um ótimo site que mostra códigos com o mesmo&amp;nbsp;propósito&amp;nbsp;em linguagens diferentes - Java, C#, C++, Perl, PHP, Python, Ruby, VB. O site fornece exemplos tais como o&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Hello World, Convert to Number, Read Text File, Sum an Array&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;&lt;span style="font-style: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;entre outros.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm; orphans: 2; widows: 2;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/div&gt;&lt;div class="western" style="font-style: normal; font-weight: medium; margin-bottom: 0cm; orphans: 2; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;E, puxando a sardinha para o Ruby, é impressionante o quanto ele é mais conciso do que a maiorias das outras linguagens.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: large;"&gt;Sem dúvida vale a pena conferir o &lt;a href="http://progzoo.net/" target="_blank"&gt;site&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-9122008174429546054?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/9122008174429546054/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/08/progzoonet-comparando-as-linguagens-de.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/9122008174429546054?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/9122008174429546054?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/eXGyIx3okT8/progzoonet-comparando-as-linguagens-de.html" title="progzoo.net: Comparando as linguagens de programação" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/08/progzoonet-comparando-as-linguagens-de.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4GR3sycCp7ImA9Wx5TE08.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-1405754788089832680</id><published>2010-07-28T06:12:00.000-07:00</published><updated>2010-07-28T06:15:26.598-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-28T06:15:26.598-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title>Teste suas expressões regulares na web</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_mK4DEqf4UXw/TFAsWqtJ-pI/AAAAAAAAAKw/86Wuzl5FeDo/s1600/RegexBuddy.gif" target='_blanck' imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="194" src="http://2.bp.blogspot.com/_mK4DEqf4UXw/TFAsWqtJ-pI/AAAAAAAAAKw/86Wuzl5FeDo/s200/RegexBuddy.gif" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Vai uma dica de um ótimo site, o &lt;a href="http://rubular.com/" target='_blanck'&gt;Rubular&lt;/a&gt;. Com ele você testa suas expressões regulares em Ruby de forma pratica e rápida e ainda pode adquirir um link de seus testes.&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="western" style="margin-bottom: 0cm;"&gt;Veja um exemplo: &lt;a href="http://rubular.com/r/tgTEBeNhzz" target='_blanck'&gt;http://rubular.com/r/tgTEBeNhzz&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-1405754788089832680?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/1405754788089832680/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/07/teste-suas-expressoes-regulares-online.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/1405754788089832680?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/1405754788089832680?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/09A2xM-5Jg8/teste-suas-expressoes-regulares-online.html" title="Teste suas expressões regulares na web" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_mK4DEqf4UXw/TFAsWqtJ-pI/AAAAAAAAAKw/86Wuzl5FeDo/s72-c/RegexBuddy.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/07/teste-suas-expressoes-regulares-online.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AAQXk7fyp7ImA9Wx5TFUw.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-9108632213925965000</id><published>2010-07-16T05:57:00.001-07:00</published><updated>2010-07-30T12:55:40.707-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-30T12:55:40.707-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title>Project Euler #1</title><content type="html">O &lt;a href="http://projecteuler.net/" target="_new"&gt;Projeto Euler&lt;/a&gt; foi iniciado por Colin Hughes (aka Euler) em outubro de 2001 e consiste em diversos problemas que envolvem matemática e computação, sendo que alguns são possíveis resolver sem o uso da computação e outros não. Segundo a descrição do projeto, este teve como principal motivação oferecer uma plataforma para que mentes curiosas mergulhem em áreas desconhecidas.&lt;br /&gt;
&lt;br /&gt;
Salvo as devidas explicações, irei começar a resolver alguns problemas, de preferência em Ruby, e postar as soluções aqui. &lt;br /&gt;
&lt;br /&gt;
Então... vamos ao &lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=1" target="_new"&gt;problema 1&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Descrição&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.&lt;br /&gt;
Find the sum of all the multiples of 3 or 5 below 1000.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Solução&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;sum = 0
(1..999).each { |x| sum += x if x%3 == 0 or x%5 == 0 }
puts sum
&lt;/pre&gt;&lt;br /&gt;
ou&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;sum = (0..999).inject {|aux, n| ( n%3 == 0 or n%5 == 0 ) ? aux + n  : aux }
p sum
&lt;/pre&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Resposta&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
233168&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-9108632213925965000?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/9108632213925965000/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/07/project-euler-1.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/9108632213925965000?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/9108632213925965000?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/-VOVRYryGwY/project-euler-1.html" title="Project Euler #1" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/07/project-euler-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQEQHs6fyp7ImA9WxFbFk8.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-5333184765843276801</id><published>2010-07-08T13:51:00.000-07:00</published><updated>2010-07-08T13:51:41.517-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-08T13:51:41.517-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><title>Doc da sua aplicação Rails</title><content type="html">Já experimentou o comando rake doc:app ?&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;rake doc:app
&lt;/pre&gt;&lt;br /&gt;
Ele cria uma doc semelhante a documentação do &lt;a href="http://ruby-doc.org/core/"&gt;Ruby&lt;/a&gt;&amp;nbsp;com todos os arquivos, classes e métodos  da sua sua aplicação no diretório /doc/app/ .&lt;br /&gt;
&lt;br /&gt;
Bom, mas existem muitos outros comandos interessantes, para conhecê-los basta rodar:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;rake -T


rake db:abort_if_pending_migrations        # Raises an error if there are pending migrations
rake db:charset                            # Retrieves the charset for the current environment's database
rake db:collation                          # Retrieves the collation for the current environment's database
rake db:create                             # Create the database defined in config/database.yml for the current RAILS_ENV
rake db:create:all                         # Create all the local databases defined in config/database.yml
rake db:drop                               # Drops the database for the current RAILS_ENV
rake db:drop:all                           # Drops all the local databases defined in config/database.yml
rake db:fixtures:identify                  # Search for a fixture given a LABEL or ID.
rake db:fixtures:load                      # Load fixtures into the current environment's database.
rake db:migrate                            # Migrate the database through scripts in db/migrate and update db/schema.rb ...
rake db:migrate:down                       # Runs the "down" for a given migration VERSION.
rake db:migrate:redo                       # Rollbacks the database one migration and re migrate up.
rake db:migrate:reset                      # Resets your database using your migrations for the current environment
rake db:migrate:up                         # Runs the "up" for a given migration VERSION.
rake db:reset                              # Drops and recreates the database from db/schema.rb for the current environm...
rake db:rollback                           # Rolls the schema back to the previous version.
rake db:schema:dump                        # Create a db/schema.rb file that can be portably used against any DB support...
rake db:schema:load                        # Load a schema.rb file into the database
rake db:seed                               # Load the seed data from db/seeds.rb
rake db:sessions:clear                     # Clear the sessions table
rake db:sessions:create                    # Creates a sessions migration for use with ActiveRecord::SessionStore
rake db:setup                              # Create the database, load the schema, and initialize with the seed data
rake db:structure:dump                     # Dump the database structure to a SQL file
rake db:test:clone                         # Recreate the test database from the current environment's database schema
rake db:test:clone_structure               # Recreate the test databases from the development structure
rake db:test:load                          # Recreate the test database from the current schema.rb
rake db:test:prepare                       # Check for pending migrations and load the test schema
rake db:test:purge                         # Empty the test database
rake db:version                            # Retrieves the current schema version number
rake doc:app                               # Build the RDOC HTML Files
rake doc:clobber_app                       # Remove rdoc products
rake doc:clobber_plugins                   # Remove plugin documentation
rake doc:clobber_rails                     # Remove rdoc products
rake doc:guides                            # Generate Rails guides
rake doc:plugins                           # Generate documentation for all installed plugins
rake doc:plugins:brazilian-rails           # Generate documentation for the brazilian-rails plugin
rake doc:plugins:human_attribute_override  # Generate documentation for the human_attribute_override plugin
rake doc:plugins:jrails                    # Generate documentation for the jrails plugin
rake doc:plugins:paperclip                 # Generate documentation for the paperclip plugin
rake doc:plugins:will_paginate             # Generate documentation for the will_paginate plugin
rake doc:rails                             # Build the RDOC HTML Files
rake doc:reapp                             # Force a rebuild of the RDOC files
rake doc:rerails                           # Force a rebuild of the RDOC files
rake gems                                  # List the gems that this rails application depends on
rake gems:build                            # Build any native extensions for unpacked gems
rake gems:build:force                      # Force the build of all gems
rake gems:install                          # Installs all required gems.
rake gems:refresh_specs                    # Regenerate gem specifications in correct format.
rake gems:unpack                           # Unpacks all required gems into vendor/gems.
rake gems:unpack:dependencies              # Unpacks all required gems and their dependencies into vendor/gems.
rake jrails:install:javascripts            # Installs the jQuery and jRails javascripts to public/javascripts
rake jrails:update:javascripts             # Copies the jQuery and jRails javascripts to public/javascripts
rake log:clear                             # Truncates all *.log files in log/ to zero bytes
rake middleware                            # Prints out your Rack middleware stack
rake notes                                 # Enumerate all annotations
rake notes:custom                          # Enumerate a custom annotation, specify with ANNOTATION=WTFHAX
rake notes:fixme                           # Enumerate all FIXME annotations
rake notes:optimize                        # Enumerate all OPTIMIZE annotations
rake notes:todo                            # Enumerate all TODO annotations
rake paperclip:clean                       # Cleans out invalid attachments.
rake paperclip:refresh                     # Refreshes both metadata and thumbnails.
rake paperclip:refresh:metadata            # Regenerates content_type/size metadata for a given CLASS (and optional ATTA...
rake paperclip:refresh:thumbnails          # Regenerates thumbnails for a given CLASS (and optional ATTACHMENT).
rake rails:freeze:edge                     # Lock to latest Edge Rails, for a specific release use RELEASE=1.2.0
rake rails:freeze:gems                     # Lock this application to the current gems (by unpacking them into vendor/ra...
rake rails:template                        # Applies the template supplied by LOCATION=/path/to/template
rake rails:unfreeze                        # Unlock this application from freeze of gems or edge and return to a fluid u...
rake rails:update                          # Update both configs, scripts and public/javascripts from Rails
rake rails:update:application_controller   # Rename application.rb to application_controller.rb
rake rails:update:configs                  # Update config/boot.rb from your current rails install
rake rails:update:generate_dispatchers     # Generate dispatcher files in RAILS_ROOT/public
rake rails:update:javascripts              # Update your javascripts from your current rails install
rake rails:update:scripts                  # Add new scripts to the application script/ directory
rake routes                                # Print out all defined routes in match order, with names.
rake secret                                # Generate a crytographically secure secret key.
rake stats                                 # Report code statistics (KLOCs, etc) from the application
rake test                                  # Run all unit, functional and integration tests
rake test:benchmark                        # Run tests for benchmarkdb:test:prepare / Benchmark the performance tests
rake test:functionals                      # Run tests for functionalsdb:test:prepare / Run the functional tests in test...
rake test:integration                      # Run tests for integrationdb:test:prepare / Run the integration tests in tes...
rake test:plugins                          # Run tests for pluginsenvironment / Run the plugin tests in vendor/plugins/*...
rake test:profile                          # Run tests for profiledb:test:prepare / Profile the performance tests
rake test:recent                           # Run tests for recentdb:test:prepare / Test recent changes
rake test:uncommitted                      # Run tests for uncommitteddb:test:prepare / Test changes since last checkin ...
rake test:units                            # Run tests for unitsdb:test:prepare / Run the unit tests in test/unit
rake time:zones:all                        # Displays names of all time zones recognized by the Rails TimeZone class, gr...
rake time:zones:local                      # Displays names of time zones recognized by the Rails TimeZone class with th...
rake time:zones:us                         # Displays names of US time zones recognized by the Rails TimeZone class, gro...
rake tmp:cache:clear                       # Clears all files and directories in tmp/cache
rake tmp:clear                             # Clear session, cache, and socket files from tmp/
rake tmp:create                            # Creates tmp directories for sessions, cache, sockets, and pids
rake tmp:pids:clear                        # Clears all files in tmp/pids
rake tmp:sessions:clear                    # Clears all files in tmp/sessions
rake tmp:sockets:clear                     # Clears all files in tmp/sockets

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-5333184765843276801?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/5333184765843276801/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/07/doc-da-sua-aplicacao-rails.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/5333184765843276801?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/5333184765843276801?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/y4fKo3RkNcE/doc-da-sua-aplicacao-rails.html" title="Doc da sua aplicação Rails" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/07/doc-da-sua-aplicacao-rails.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8ER3k4cSp7ImA9WxFUGU0.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-3096594015671460754</id><published>2010-06-30T06:16:00.000-07:00</published><updated>2010-06-30T06:16:46.739-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-30T06:16:46.739-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><title>Em qual ambiente estamos?</title><content type="html">Já teve a necessidade de saber em qual ambiente de trabalho - production, development, test e  etc - você está? Acredito que sim! Logo segue algumas dicas para saber isso:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;if Rails.env == 'development'
  puts 'Estamos no development'
elsif Rails.env == 'production'
  puts 'Estamos no production'
end
&lt;/pre&gt;&lt;br /&gt;
Ou:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;puts 'Estamos no development' if Rails.env.development? 
puts 'Estamos no production' if Rails.env.production? 
puts  'Estamos no test' if Rails.env.test?  
puts  'Estamos no whatever' if Rails.env.whatever?
&lt;/pre&gt;&lt;br /&gt;
Ou usando a variável de ambientes RAILS_ENV:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;if RAILS_ENV == 'development'
  puts 'Estamos no development'
elsif RAILS_ENV == 'production'
  puts 'Estamos no production'
end
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-3096594015671460754?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/3096594015671460754/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/06/em-qual-ambiente-estamos.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/3096594015671460754?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/3096594015671460754?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/GQE99I-yU68/em-qual-ambiente-estamos.html" title="Em qual ambiente estamos?" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/06/em-qual-ambiente-estamos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEBR3sycCp7ImA9WxFVEE0.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-7828768418180630456</id><published>2010-06-04T10:48:00.000-07:00</published><updated>2010-06-08T07:50:56.598-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-08T07:50:56.598-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><title>Wallpaper Ruby on Rails</title><content type="html">Estava procurando um papel de parede novo e olhe o que encontrei:&lt;br /&gt;
[ P.S. basta clicar nas fotos para ser redirecionado aos devidos sites ]&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.flickr.com/photos/encyte/56883622/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/_mK4DEqf4UXw/S7TcxprYZ-I/AAAAAAAAAJg/1AKQ2OhZ75M/s200/56944752_0ddecad0f8.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.wallpaperpimper.com/Rails-wallpaper-106833" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="150" src="http://2.bp.blogspot.com/_mK4DEqf4UXw/TAk6q0H7TSI/AAAAAAAAAKU/_J6JncjMq-Q/s200/Rails_wallpaper.jpg" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.rubyinside.com/advent2006/other1920.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/TAk6g47R49I/AAAAAAAAAKE/Ihn8eTDDaUI/s200/papel_de_parede_ruby_rails.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.rubyinside.com/advent2006/24-wallpapers.html" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/TAk6mUqLokI/AAAAAAAAAKM/ka6tz9Ia00c/s200/wallpaper_rails.jpg" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-7828768418180630456?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/7828768418180630456/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/06/wallpaper-ruby-on-rails.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/7828768418180630456?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/7828768418180630456?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/9d6EV-Xt9c8/wallpaper-ruby-on-rails.html" title="Wallpaper Ruby on Rails" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_mK4DEqf4UXw/S7TcxprYZ-I/AAAAAAAAAJg/1AKQ2OhZ75M/s72-c/56944752_0ddecad0f8.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/06/wallpaper-ruby-on-rails.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EGSH86fSp7ImA9WxFQF0Q.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-8169040719343584892</id><published>2010-05-13T09:52:00.000-07:00</published><updated>2010-05-13T18:13:49.115-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-13T18:13:49.115-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title>Interpretador Ruby Online</title><content type="html">Já passou pela experiência de querer executar  algum algoritmo mas estava sem o devido  interpretador ou compilador? Certamente sim! Mas nessas horas o site &lt;a href="http://codepad.org/" target="_blank"&gt;CodePad&lt;/a&gt; é uma ótima saída, com ele você pode interpretar/compilar código fonte de várias linguagens tais com: Ruby, PHP, C, C++, Haskell, Lua, Ocaml, Perl e outras. Além disso, ele disponibiliza o seu código juntamente com a respectiva saída através de uma url curta de forma semelhante as usadas no Twitter.&lt;br /&gt;
Sem dúvida esses fatores apontam o CodPad como uma boa maneira para mostrar,&amp;nbsp; de forma rápida,&amp;nbsp; um código simples para alguém. &lt;br /&gt;
&lt;br /&gt;
Interessou? Então entre no &lt;a href="http://codepad.org/" target="_blank"&gt;site&lt;/a&gt; e/ou veja como é o seu &lt;a href="http://codepad.org/about" target="_blank"&gt;funcionamento&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
P.S. Fiz alguns testes em Ruby e em todos tive sucesso, veja um deles &lt;a href="http://codepad.org/QrVXq8oj" target="_blank"&gt;http://codepad.org/QrVXq8oj&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-8169040719343584892?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/8169040719343584892/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/05/interpretador-ruby-online.html#comment-form" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/8169040719343584892?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/8169040719343584892?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/hzerMMOYyTo/interpretador-ruby-online.html" title="Interpretador Ruby Online" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/05/interpretador-ruby-online.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8CQHw-fyp7ImA9WxFRFk4.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-4535497583847925373</id><published>2010-04-30T06:41:00.000-07:00</published><updated>2010-04-30T06:41:01.257-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-30T06:41:01.257-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title>Precedência em operadores lógicos</title><content type="html">Antes de qualquer coisa, veja os seguintes códigos e seus respectivos retornos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;true and false #=&amp;gt; false
true &amp;amp;&amp;amp; false #=&amp;gt; false
&lt;/pre&gt;&lt;pre class="cod"&gt;true or false #=&amp;gt; true
true || false #=&amp;gt; true
&lt;/pre&gt;&lt;br /&gt;
Em vista disso, logo vem a pergunta: Qual a diferença entre "and" e "&amp;amp;&amp;amp;" e entre "or" e "||"?&lt;br /&gt;
A resposta é simples, "&amp;amp;&amp;amp;" e "||" possuem maior precedência que "and" e "or". Sendo que o "&amp;amp;&amp;amp;" possui maior precedência que o "||" e o "and" possui a mesma precedência que "or". Veja alguns exemplos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;true or false and false #=&amp;gt; false
&lt;/pre&gt;&lt;br /&gt;
Neste caso o código é resolvido da esquerda para a direita, ou seja: primeiro o "or" e em seguida o "and".&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;true or false &amp;amp;&amp;amp; false #=&amp;gt; true
&lt;/pre&gt;&lt;br /&gt;
Como o "&amp;amp;&amp;amp;" possui maior precedência ele é resolvido primeiramente e depois o "or".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-4535497583847925373?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/4535497583847925373/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/04/precedencia-em-operadores-logicos.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/4535497583847925373?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/4535497583847925373?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/h9e7GcJY-2M/precedencia-em-operadores-logicos.html" title="Precedência em operadores lógicos" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/04/precedencia-em-operadores-logicos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAFRnc5eCp7ImA9WxFSGE0.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-3340271074541128231</id><published>2010-04-18T08:01:00.000-07:00</published><updated>2010-04-20T14:58:37.920-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-20T14:58:37.920-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Plugins" /><title>Tarefas em background - delayed job</title><content type="html">Realizar tarefas em background é uma boa saída para melhorar a resposta da sua aplicação. Geralmente usamos este recurso para tarefas como enviar e-mail, redimensionar imagens, postar algo no twitter... isso, simplesmente pelo fato que estas tarefas não necessitarem de resposta imediata para o usuário continuar usando o sistema.&lt;br /&gt;
A verdade é que, para quem utiliza Rails, existem vários plugins e gens que fazem este trabalho. Vejamos alguns:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://github.com/blog/542-introducing-resque"&gt;Introducing Resque&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://github.com/ncr/background-fu"&gt;background-f&lt;span style="font-size: small;"&gt;u &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;a href="http://github.com/saimonmoore/backgroundjob" id="backgroundjob" name="backgroundjob"&gt;Backgroundjob&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://github.com/imedo/background_lite"&gt;background_lite&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://github.com/gnufied/backgroundrb"&gt;backgroundrb&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;&lt;br /&gt;
Porem, na minha opnião, a melhor opção é o &lt;a href="http://github.com/collectiveidea/delayed_job"&gt;Delayed Job&lt;/a&gt;. Com ele você armazena os jobs em uma tabela e os realiza quando achar melhor! Sem contar que o Delayed Job está disponível nas formas de plugin e gem. Vejamos o seu funcionamento: &lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt; Para instalar:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="cod"&gt;&lt;span style="font-size: small;"&gt;# instação como plugin&amp;nbsp;&lt;/span&gt;
&lt;span style="font-size: small;"&gt;# rode na raiz da aplicação &lt;/span&gt;
script/plugin install git://github.com/collectiveidea/delayed_job.git
&lt;/pre&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Configurando o banco de dados&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Para gerar a tabela onde as tarefas serão salvas use os seguintes comandos no terminal:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;&amp;nbsp;script/generate delayed_job
&amp;nbsp;rake db:migrate&amp;nbsp;&lt;/pre&gt;Isso vai gerar uma tabela no seguintes moldes:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;create_table :delayed_jobs, :force =&amp;gt; true do |table|
  table.integer  :priority, :default =&amp;gt; 0      # Allows some jobs to jump to the front of the queue
  table.integer  :attempts, :default =&amp;gt; 0      # Provides for retries, but still fail eventually.
  table.text     :handler                      # YAML-encoded string of the object that will do work
  table.text   :last_error                   # reason for last failure (See Note below)
  table.datetime :run_at                       # When to run. Could be Time.zone.now for immediately, or sometime in the future.
  table.datetime :locked_at                    # Set when a client is working on this object
  table.datetime :failed_at                    # Set when all retries have failed (actually, by default, the record is deleted instead)
  table.string   :locked_by                    # Who is working on this object (if locked)
  table.timestamps
end&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: large;"&gt;Realizando tarefas em background&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Agora já é possível realizar jobs em background, veja um exemplo de envio de e-mail: &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;# usando o Delayed Job
MeuModelDeEmail.send_later :deliver_MeuEmail, @MeuParametro

# sem usar o Delayed Job:
MeuModelDeEmail.deliver_MeuEmail(@MeuParametro)&lt;/pre&gt;&lt;br /&gt;
Outro exemplo:&lt;br /&gt;
&lt;pre class="cod"&gt;&lt;pre class="sh_ruby sh_sourceCode"&gt;@imagem&lt;span class="sh_symbol"&gt;.&lt;/span&gt;calculate_size # sem usar o Delayed Job&lt;/pre&gt;&lt;pre class="sh_ruby sh_sourceCode"&gt;@imagem.send_later&lt;span class="sh_symbol"&gt;(:&lt;/span&gt;calculate_size&lt;span class="sh_symbol"&gt;)&lt;/span&gt; # usando o Delayed Job&amp;nbsp;&lt;/pre&gt;&lt;pre class="sh_ruby sh_sourceCode"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/pre&gt;Mais um exemplo&lt;br /&gt;
&lt;br /&gt;
Outro modo seria passar a(s) tarefa(s) para uma lib onde teríamos um arquivo, por exemplo: lib/mailingenvia.rb, da seguinte forma:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;require 'net/smtp'
class Mailingenvia &amp;lt; Struct.new( MeuParametro )
&amp;nbsp; def perform
&amp;nbsp;&amp;nbsp; Contato.deliver_MeuEmail( MeuParametro )
&amp;nbsp; end
end&lt;/pre&gt;e chamá-lo assim:&lt;br /&gt;
&lt;pre class="cod"&gt;Delayed::Job.enqueue Mailingenvia.new( @MeuParametro )
# P.S. Quando isso é feito o método perform é chamado &lt;/pre&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Realizando as tarefas que estão na fila de prioridade&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Quando fazemos um tarefa pelo delayed job ela é salva na tabela chamada "delayed_jobs" e para rodá-la é necessário o seguinte comando:&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;&lt;code&gt; &lt;span style="font-family: inherit; font-size: small;"&gt;rake jobs:work&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;# para parar de realizar os jobs: CRTL-C&lt;/span&gt;&lt;/code&gt;
&lt;/pre&gt;&lt;code&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;Se desejar apagar todas as tarefas da fila:&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;&lt;code style="font-family: inherit;"&gt;rake jobs:clear&lt;/code&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &lt;/span&gt;&lt;code&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Bom, é isso. Para maiores informações veja a página do daleyd job no &lt;a href="http://github.com/collectiveidea/delayed_job"&gt;github&lt;/a&gt; ou asista este &lt;a href="http://railscasts.com/episodes/171-delayed-job"&gt;screencast&lt;/a&gt; que eu recomendo fortimente! Até a proxima!&lt;br /&gt;
&lt;br /&gt;
&lt;span onmouseout="_tipoff()" onmouseover="_tipon(this)"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-3340271074541128231?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/3340271074541128231/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/04/tarefas-em-background-delayed-job.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/3340271074541128231?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/3340271074541128231?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/dXMK_-68LNM/tarefas-em-background-delayed-job.html" title="Tarefas em background - delayed job" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/04/tarefas-em-background-delayed-job.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEASXg8eyp7ImA9WxBaGUU.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-5822709043284766406</id><published>2010-03-30T14:05:00.000-07:00</published><updated>2010-03-30T14:30:48.673-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-30T14:30:48.673-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Noticias" /><title>Working with Rails ultrapassa a marca de 17000 programadores</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_mK4DEqf4UXw/S6pFFw_W6wI/AAAAAAAAAIg/YqzArnsZlYY/s1600/aplausos.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="267" src="http://2.bp.blogspot.com/_mK4DEqf4UXw/S6pFFw_W6wI/AAAAAAAAAIg/YqzArnsZlYY/s400/aplausos.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Estive lendo um &lt;a href="http://www.nomedojogo.com/2007/08/21/working-with-rails-ultrapassa-a-marca-de-8000-programadores/"&gt;post&lt;/a&gt; do &lt;a href="http://twitter.com/carlosbrando"&gt;Carlos Brando&lt;/a&gt; de 21 de agosto de 2007 com o título “Working with Rails ultrapassa a marca de 8000 programadores.” e nesta semana ultrapassamos a casa dos 17000! Ou seja, são mais 9000 desenvolvedores em menos de 3 anos, um crescimento maior que 100%! Impressionante não?&lt;br /&gt;
Atualmente os brasileiros estão ocupando o 3º lugar geral em número de desenvolvedores cadastrados no &lt;a href="http://www.workingwithrails.com/"&gt;site&lt;/a&gt;, perdendo apenas para o Reino Unido e&amp;nbsp; Estados Unidos. Terceiro lugar este que foi conquistado com 874 programadores! O que, na minha opinião, é pouco em vista do que temos. Então nunca é de mais dizer: não deixe de &lt;a href="http://www.workingwithrails.com/account/signup"&gt;se cadastrar&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-5822709043284766406?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/5822709043284766406/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/03/working-with-rails-ultrapassa-marca-de.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/5822709043284766406?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/5822709043284766406?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/JLA7VfaFuPg/working-with-rails-ultrapassa-marca-de.html" title="Working with Rails ultrapassa a marca de 17000 programadores" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_mK4DEqf4UXw/S6pFFw_W6wI/AAAAAAAAAIg/YqzArnsZlYY/s72-c/aplausos.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/03/working-with-rails-ultrapassa-marca-de.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8CRX0zeSp7ImA9WxFSGUs.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-588140015087063234</id><published>2010-03-29T08:36:00.000-07:00</published><updated>2010-04-22T13:41:04.381-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-22T13:41:04.381-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title>Símbolos em Ruby</title><content type="html">São poucas linguagens que possuem símbolos assim como o Ruby. Mas ai vem pergunta: o que são símbolos? Eles são uma forma de representar uma string de modo mais leve, para ser mais especifico são os textos iniciados com ":". Lembrando que, partindo do principio que tudo em Ruby é objeto, isso é muito útil!&lt;br /&gt;
Veja alguns exemplos de utilização de símbolos:&lt;br /&gt;
&lt;pre class="cod"&gt;redirect_to :action =&amp;gt; :index
&lt;/pre&gt;&lt;pre class="cod"&gt;&amp;lt;% form_tag :action =&amp;gt; :enviar_eventos do %&amp;gt; 
&lt;/pre&gt;&lt;pre class="cod"&gt;usuario.update_attribute(:tel, "2222-2222")
&lt;/pre&gt;&lt;br /&gt;
Veja isso:&lt;br /&gt;
&lt;pre class="cod"&gt;a = :"www.casaopen.com.br"
a.object_id #=&amp;gt; 166478
:'www.casaopen.com.br'.object_id # =&amp;gt; 166478
&lt;/pre&gt;&lt;br /&gt;
Isso que dizer que os símbolos são de, certa forma, imutáveis ou seja eles permanecem no ciclo de vida do seu projeto.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Símbolos são representações de sequências, veja:&lt;/span&gt;&lt;br /&gt;
&lt;pre class="cod"&gt;a = :"Ruby On Rails" #=&amp;gt; :"Ruby On Rails"&amp;nbsp;
a.class #=&amp;gt; Symbol
puts a #=&amp;gt; Ruby On Rails #=&amp;gt; nil
# 'puts a' imprime a sequência de a que é semelhante ao puts em uma String...&amp;nbsp;&lt;/pre&gt;&lt;pre class="cod"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cod"&gt;b = "Ruby On Rails" #=&amp;gt; "Ruby On Rails"
b.class #=&amp;gt; String
puts b #=&amp;gt; Ruby On Rails #=&amp;gt; nil
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Em vista disso, qual é a importância dos símbolos?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Eles são uma ótima forma de representar sequências que não necessitam de alterações em tempo de execução e também não  necessitam de todos os métodos da classe String! Dúvida? Execute o seguinte código e veja o resultado.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;a = :"Ruby on Rails"
b = "Ruby on Rails"
a.methods.size
b.methods.size
&lt;/pre&gt;&lt;br /&gt;
Para maiores informações veja esse &lt;a href="http://www.troubleshooters.com/codecorn/ruby/symbols.htm"&gt;post&lt;/a&gt; que explica todas as formas possíveis de simbolos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-588140015087063234?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/588140015087063234/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/03/simbolos-em-ruby.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/588140015087063234?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/588140015087063234?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/SVDlumHemm8/simbolos-em-ruby.html" title="Símbolos em Ruby" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/03/simbolos-em-ruby.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEAQHg-eyp7ImA9WxBaEks.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-8538909766143777720</id><published>2010-03-22T05:24:00.000-07:00</published><updated>2010-03-22T05:24:01.653-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-22T05:24:01.653-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Off-Topic" /><title>Explore o mundo em 360 graus</title><content type="html">Gostaria de conhecer o mundo em 360 graus? Nada melhor que visitar o site &lt;a href="http://www.360cities.net/"&gt;360Cities&lt;/a&gt;. Para quem não conhece, este reuni uma imensa galeria de fotos panorâmicas de várias regiões do mundo, inclusive de muitas cidades brasileiras – Rio de Janeiro, Belo Horizonte, Ouro Preto e etc. Seu conteúdo é abastecido por fotógrafos de várias cidades do mundo e está em constante crescimento. Sem dúvida este foi um dos melhores sites que conheci&amp;nbsp;&amp;nbsp; recentemente logo, uma ótima pedida.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veja algumas imagens do 360Cities:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.360cities.net/image/sugarloaf-mountain-urca-rio-de-janeiro"&gt;Pão de Açucar&lt;/a&gt; - Rio de Janeiro - RG&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_mK4DEqf4UXw/S6OyzaamD2I/AAAAAAAAAIA/ejbh3R9kILU/s1600-h/paodeacucar.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/_mK4DEqf4UXw/S6OyzaamD2I/AAAAAAAAAIA/ejbh3R9kILU/s640/paodeacucar.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://www.360cities.net/image/igrejinha-da-pampulha-belo-horizonte-minas-gerais"&gt;Igrejinha da Pampulha&lt;/a&gt; - Belo Horizonte - MG&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_mK4DEqf4UXw/S6OyuBKh5tI/AAAAAAAAAHw/iOVMZ7jsueI/s1600-h/belo%2Bhorizonte.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://3.bp.blogspot.com/_mK4DEqf4UXw/S6OyuBKh5tI/AAAAAAAAAHw/iOVMZ7jsueI/s640/belo%2Bhorizonte.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://www.360cities.net/image/igreja-sao-francisco-de-assis-ouro-preto-mg"&gt;Igreja de Nossa Senhora da Conceição de Antônio Dias&lt;/a&gt; - Ouro Preto - MG&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_mK4DEqf4UXw/S6OywjhlbvI/AAAAAAAAAH4/JByHavvDsMQ/s1600/ouro%2Bpreto.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/_mK4DEqf4UXw/S6OywjhlbvI/AAAAAAAAAH4/JByHavvDsMQ/s640/ouro%2Bpreto.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-8538909766143777720?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/8538909766143777720/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/03/explore-o-mundo-em-360-graus.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/8538909766143777720?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/8538909766143777720?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/0g6-Cqvv9Ho/explore-o-mundo-em-360-graus.html" title="Explore o mundo em 360 graus" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_mK4DEqf4UXw/S6OyzaamD2I/AAAAAAAAAIA/ejbh3R9kILU/s72-c/paodeacucar.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/03/explore-o-mundo-em-360-graus.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcGRn8zeCp7ImA9WxBbF00.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-4181617494147215149</id><published>2010-03-15T18:05:00.000-07:00</published><updated>2010-03-15T18:30:27.180-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-15T18:30:27.180-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title>Operador ternário e Ruby</title><content type="html">O operador ternário é uma ótima forma de deixar o código mais limpo, veja sua sintaxe:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;# (condicao) ? resultado_se_condicao_verdadeiro : resultado_se_condicao_falso      
&lt;/pre&gt;&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;a = true&amp;nbsp; ? 'a' : 'b' #=&amp;gt; "a"
b = false ? 'a' : 'b' #=&amp;gt; "b"
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
que é equivalante a:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;if true 
  &amp;nbsp; a = 'a' 
else
  &amp;nbsp; a = 'b'
end
&lt;/pre&gt;&lt;br /&gt;
Outra opção com resultado semelhante é:&lt;br /&gt;
&lt;pre class="cod"&gt;a = (true&amp;nbsp; &amp;amp;&amp;amp; 'a') || 'b' #=&amp;gt; "a"
a = true || 'b' #=&amp;gt; true 

b = (false &amp;amp;&amp;amp; 'a') || 'b' #=&amp;gt; "b" 
b = false || 'b' #=&amp;gt; "b"
&lt;/pre&gt;&lt;br /&gt;
fonte: &lt;a href="http://invisibleblocks.wordpress.com/2007/06/11/rubys-other-ternary-operator/"&gt;http://invisibleblocks.wordpress.com/2007/06/11/rubys-other-ternary-operator/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-4181617494147215149?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/4181617494147215149/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/03/operador-ternario-e-ruby.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/4181617494147215149?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/4181617494147215149?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/tJQsdl8WNt8/operador-ternario-e-ruby.html" title="Operador ternário e Ruby" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/03/operador-ternario-e-ruby.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUHSXo4eSp7ImA9WxBbE0s.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-4763329938103920134</id><published>2010-03-08T19:04:00.000-08:00</published><updated>2010-03-11T18:17:18.431-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-11T18:17:18.431-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Noticias" /><title>De casa nova!</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_mK4DEqf4UXw/S5W4Ocdu2XI/AAAAAAAAAHY/3PW2lPJnlls/s1600-h/trilhos11bb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_mK4DEqf4UXw/S5W4Ocdu2XI/AAAAAAAAAHY/3PW2lPJnlls/s320/trilhos11bb.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Como vocês já devem ter notado, agora estou de casa nova! Para ser mais especifico de &lt;a href="http://www.casaopen.com.br/"&gt;casaopen.com.br&lt;/a&gt;. Mas, apesar da nova casa, o prato principal continua sendo o mesmo: Ruby on Rails! &lt;br /&gt;
Espero que nessa nova direção possamos crescer juntos afim de que a comunidade RoR venha estar cada dia mais forte!&lt;br /&gt;
&lt;br /&gt;
Viva Rails!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-4763329938103920134?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/4763329938103920134/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/03/de-casa-nova.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/4763329938103920134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/4763329938103920134?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/lXdMiO0KWvY/de-casa-nova.html" title="De casa nova!" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_mK4DEqf4UXw/S5W4Ocdu2XI/AAAAAAAAAHY/3PW2lPJnlls/s72-c/trilhos11bb.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/03/de-casa-nova.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QFRXw7eip7ImA9WxBbF0o.&quot;"><id>tag:blogger.com,1999:blog-4800026411398402386.post-2719679710457007700</id><published>2010-02-24T12:50:00.000-08:00</published><updated>2010-03-16T14:35:14.202-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-16T14:35:14.202-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><title>E-mail para vários destinatários</title><content type="html">Recentemente desenvolvi uma aplicação que tinha a necessidade de enviar e-mail para vários destinatários. O que poderia gerar problemas relacionados a quantidade máxima de destinatários&amp;nbsp; - CC, CCo, BCC... - do SMTP. No meu caso o SMTP permitia enviar e-mails para no máximo 500 destinatários em uma única vez via mala direta. Fato é que este detalhe nem sempre é lembrado na hora do desenvolvimento. Então deixo aqui uma sugestão de código para enviar e-mails respeitando o limite de destinatários:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cod"&gt;smtp_max = 499 # máximo de destinatários do smtp
  while not destinatarios.empty? # enquanto há destinatários
    begin
      # envia para os primeiros destinatários
      ContatoMailer.deliver_email(destinatarios.first(smtp_max))
    rescue Net::SMTPFatalError, Net::SMTPServerBusy, 
      Net::SMTPUnknownError, Net::SMTPSyntaxError, 
      Net::SMTPAuthenticationError, IOError, TimeoutError
    end
    destinatarios.slice!(0..smtp_max - 1) # retira da lista os destinatários enviados
  end
&lt;/pre&gt;&lt;br /&gt;
Neste exemplo assumimos que a variável destinatários é um vetor de e-mails. Ex: ["email1@dominio", "email2@dominio", "email3@dominio"]&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Observação&lt;/b&gt;: Na minha aplicação, envio os e-mails em background através do plugin&amp;nbsp; &lt;a href="http://github.com/tobi/delayed_job"&gt;delayed job&lt;/a&gt; a fim de aumentar o conforto para o usuário e melhorar o desenpelho. Mas como realizar tarefas em background fica para outro post!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4800026411398402386-2719679710457007700?l=www.casaopen.com.br' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.casaopen.com.br/feeds/2719679710457007700/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.casaopen.com.br/2010/02/e-mail-para-varios-destinatarios.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/2719679710457007700?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4800026411398402386/posts/default/2719679710457007700?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/casaopen/~3/4k7k6vQq04I/e-mail-para-varios-destinatarios.html" title="E-mail para vários destinatários" /><author><name>Samuel Vinícius</name><uri>http://www.blogger.com/profile/18247509515584222197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://4.bp.blogspot.com/_mK4DEqf4UXw/S3xS4zHqVtI/AAAAAAAAADw/aChBzCIhxE4/S220/uu.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.casaopen.com.br/2010/02/e-mail-para-varios-destinatarios.html</feedburner:origLink></entry></feed>

