<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ArthurGeek.net &#187; rails</title>
	<atom:link href="http://www.arthurgeek.net/tag/rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.arthurgeek.net</link>
	<description>Rails, Mac... e Rock'n Roll!</description>
	<lastBuildDate>Sat, 20 Dec 2008 23:25:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Rails Summit 2008</title>
		<link>http://www.arthurgeek.net/rails-summit-2008/</link>
		<comments>http://www.arthurgeek.net/rails-summit-2008/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 04:29:01 +0000</pubDate>
		<dc:creator>ArthurGeek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[railssummit]]></category>

		<guid isPermaLink="false">http://www.arthurgeek.net/?p=122</guid>
		<description><![CDATA[Nessa semana aconteceu o Rails Summit Latin America, evento organizado pelo Fabio Akita e o pessoal da Locaweb.
O evento foi sensacional. A organização estava impecável, ainda mais para uma primeira edição. O melhor evento voltado para programadores que eu participei. 
Estiveram presentes grandes nomes da comunidade internacional como Chad Fowler, Dr. Nic, Chris Wanstrath, os caras da Phusion, Jay [...]]]></description>
			<content:encoded><![CDATA[<p>Nessa semana aconteceu o <a href="http://www.locaweb.com.br/railssummit/">Rails Summit Latin America</a>, evento organizado pelo <a href="http://akitaonrails.com">Fabio Akita</a> e o pessoal da <a href="http://www.locaweb.com.br">Locaweb</a>.</p>
<p>O evento foi sensacional. A organização estava impecável, ainda mais para uma primeira edição. O melhor evento voltado para programadores que eu participei. </p>
<p>Estiveram presentes grandes nomes da comunidade internacional como <a href="http://chadfowler.com">Chad Fowler</a>, <a href="http://drnicwilliams.com/">Dr. Nic</a>, <a href="http://errtheblog.com/">Chris Wanstrath</a>, <a href="http://www.modrails.com/">os caras da Phusion</a>, <a href="http://blog.jayfields.com/">Jay Fields</a>, <a href="http://blog.davidchelimsky.net/">David Chelimsky</a>, <a href="http://blog.obiefernandez.com/">Obie Fernandez</a>. O pessoal da comunidade brasileira também fizeram bonito: <a href="http://akitaonrails.com">Fabio Akita</a>, <a href="http://nomedojogo.com/">Carlos Brando</a>, <a href="http://www.georgeguimaraes.com/">George Guimarães</a>, <a href="http://dtsato.com">Danilo Sato</a>, <a href="http://blogblogs.com.br">Manoel Lemos</a> e o pessoal da WebCo, <a href="http://improveit.com.br">Vinícius Telles</a>, <a href="http://fabiokung.com">Fabio Kung</a>, entre outros.</p>
<p>Com certeza, o mais interessante foi conhecer as pessoas por trás de URLs. Pessoas como: <a href="http://eustaquiorangel.com/">TaQ</a>, <a href="http://daviscabral.com">Davis Cabral</a>, <a href="http://railsbox.org/">Ozéias Santana</a>, <a href="http://www.spiceee.com/">Spicee</a>, <a href="http://egenial.com.br">Carlos Eduardo</a>, <a href="http://www.monteiro.eti.br/">Júlio Monteiro</a>, <a href="http://www.improveit.com.br/en/company/tapajos">Marcos Tapajós</a>, e muitas outras pessoas. Rever todo o pessoal que eu já conhecia também foi muito legal.</p>
<p>Já estou no aguardo para o evento do ano que vem! :)</p>
<p><a href="http://blogsearch.google.com/blogsearch?q=rails+summit">Acompanhe o relato de outros blogueiros sobre o evento</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arthurgeek.net/rails-summit-2008/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Usando o ruby-debug com Passenger</title>
		<link>http://www.arthurgeek.net/usando-o-ruby-debug-com-passenger/</link>
		<comments>http://www.arthurgeek.net/usando-o-ruby-debug-com-passenger/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 00:17:00 +0000</pubDate>
		<dc:creator>ArthurGeek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.arthurgeek.net/2008/08/13/usando-o-ruby-debug-com-passenger</guid>
		<description><![CDATA[Já tem algum tempo que eu venho usando o Phusion Passenger no ambiente de desenvolvimento.
Um dos problemas que eu tinha era quando precisava usar o ruby-debug. Cheguei até a perguntar no IRC, mas ninguém sabia me dar uma resposta de como usá-lo em conjunto com o Passenger. Na época, resolvi usar o Mongrel para fazer [...]]]></description>
			<content:encoded><![CDATA[<p>Já tem algum tempo que eu venho usando o <a href="http://modrails.com/">Phusion Passenger</a> no ambiente de desenvolvimento.</p>
<p>Um dos problemas que eu tinha era quando precisava usar o ruby-debug. Cheguei até a perguntar no <span class="caps">IRC</span>, mas ninguém sabia me dar uma resposta de como usá-lo em conjunto com o Passenger. Na época, resolvi usar o Mongrel para fazer o debugging e nem me preocupei mais.</p>
<p>Hoje, precisei de novo. E não queria usar o Mongrel. Então, fui novamente atrás de uma solução. Vamos à ela:</p>
<p>No arquivo: <em>config/environments/development.rb</em> coloque o seguinte código:</p>
<pre><code class="ruby"># Load ruby-debug
require "ruby-debug"
Debugger.start_remote</code></pre>
<p>Este código ativa o modo remoto do ruby-debug.</p>
<p>Agora, vamos reiniciar o passenger:</p>
<pre><code>$ touch tmp/restart.txt</code></pre>
<p>Agora, vamos conectar remotamente ao ruby-debug através do terminal:</p>
<pre><code>$ rdebug -c
Connected.</code></pre>
<p>Pronto! Sempre que quiser depurar algum erro em sua aplicação, coloque a palavra chave <strong>debugger</strong> e espere o rdebug. Só não se esqueça dos testes para não depender tanto de debugging. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arthurgeek.net/usando-o-ruby-debug-com-passenger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dreamhost + mod_rails</title>
		<link>http://www.arthurgeek.net/dreamhost-mod_rails/</link>
		<comments>http://www.arthurgeek.net/dreamhost-mod_rails/#comments</comments>
		<pubDate>Tue, 13 May 2008 21:37:00 +0000</pubDate>
		<dc:creator>ArthurGeek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[mod_rails]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.arthurgeek.net/2008/05/14/dreamhost-mod_rails</guid>
		<description><![CDATA[O pessoal da Dreamhost anunciou hoje que todos clientes tem suporte para o mod_rails.
Resolvi migrar esse blog para o mod_rails, então, se alguma coisa de estranho aparecer por aqui, me avisem, pode ser isso. :)
Espero que o blog fique mais responsivo do que antes e não caia tanto também.
Boa sorte pro pessoal da Dreamhost e [...]]]></description>
			<content:encoded><![CDATA[<p>O pessoal da <a href="http://www.dreamhost.com/r.cgi?218044">Dreamhost</a> anunciou hoje que todos clientes tem suporte para o <a href="http://www.modrails.com">mod_rails</a>.</p>
<p>Resolvi migrar esse blog para o mod_rails, então, se alguma coisa de estranho aparecer por aqui, me avisem, pode ser isso. :)</p>
<p>Espero que o blog fique mais responsivo do que antes e não caia tanto também.</p>
<p>Boa sorte pro pessoal da Dreamhost e que eles possam resolver <a href="http://blog.dreamhost.com/2008/01/10/rails-is-as-rails-does/">o &#8216;maior&#8217; problema deles</a> e de outros SharedHosts. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arthurgeek.net/dreamhost-mod_rails/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>RejectConf&#8217;07</title>
		<link>http://www.arthurgeek.net/rejectconf-07/</link>
		<comments>http://www.arthurgeek.net/rejectconf-07/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 20:54:00 +0000</pubDate>
		<dc:creator>ArthurGeek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.arthurgeek.net/2007/11/19/rejectconf-07</guid>
		<description><![CDATA[Neste final de semana aconteceu o RejectConf&#8217;07. Muitas palestras e cases de sucesso. Mas com certeza o melhor foi finalmente poder conhecer a galera da comunidade Ruby/Rails pessoalmente. Akita, Carlos Brando, Eduardo Fiorezi, o pessoal do Pagestackr, entre outros feras. Agora precisamos marcar um &#8220;Nerds On Beer&#8221; com essa galera para trocarmos mais idéias.
E que [...]]]></description>
			<content:encoded><![CDATA[<p>Neste final de semana aconteceu o RejectConf&#8217;07. Muitas palestras e cases de sucesso. Mas com certeza o melhor foi finalmente poder conhecer a galera da comunidade Ruby/Rails pessoalmente. <a href="http://www.akitaonrails.com">Akita</a>, <a href="http://www.nomedojogo.com/">Carlos Brando</a>, <a href="http://www.tudoquequerosaber.com">Eduardo Fiorezi</a>, o pessoal do <a href="http://www.pagestackr.com">Pagestackr</a>, entre outros feras. Agora precisamos marcar um &#8220;Nerds On Beer&#8221; com essa galera para trocarmos mais idéias.</p>
<p>E que venha a RailsConf Brasil! ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arthurgeek.net/rejectconf-07/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Edge migrations mais sexy</title>
		<link>http://www.arthurgeek.net/edge-migrations-mais-sexy/</link>
		<comments>http://www.arthurgeek.net/edge-migrations-mais-sexy/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 13:51:00 +0000</pubDate>
		<dc:creator>ArthurGeek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[edge]]></category>
		<category><![CDATA[migrations]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.arthurgeek.net/2007/10/19/edge-migrations-mais-sexy</guid>
		<description><![CDATA[Um plugin que eu costumava usar muito era o Sexy Migrations. Era, pois uma sintaxe inspirada nele foi adicionado ao Rails Edge.
Agora que estou usando o Edge em alguns projetos meus, sinto falta do foreign_key (ou simplesmente fkey) que usava no Sexy Migrations e não está presente no Edge. Por isso, criei um patch que [...]]]></description>
			<content:encoded><![CDATA[<p>Um plugin que eu costumava usar muito era o <a href="http://errtheblog.com/post/2381">Sexy Migrations</a>. Era, pois uma sintaxe inspirada nele foi <a href="http://dev.rubyonrails.org/changeset/6667">adicionado ao Rails Edge</a>.</p>
<p>Agora que estou usando o Edge em alguns projetos meus, sinto falta do foreign_key (ou simplesmente fkey) que usava no Sexy Migrations e não está presente no Edge. Por isso, <a href="http://dev.rubyonrails.org/ticket/9775">criei um patch</a> que adiciona o suporte à foreign_key na sintaxe das migrations.</p>
<p>Então, onde você escrevia (com o Edge):</p>
<pre class="rails"><code>create_table <span class="re3">:user</span> <span class="kw1">do</span> |t|
    t.<span class="me1">integer</span> <span class="re3">:country_id</span>
    <span class="br0">[</span>....<span class="br0">]</span>
<span class="kw1">end</span></code></pre>
<p>Poderá escrever assim:</p>
<pre class="rails"><code>create_table <span class="re3">:user</span> <span class="kw1">do</span> |t|
    t.<span class="me1">foreign_key</span> <span class="re3">:country</span>
    <span class="br0">[</span>....<span class="br0">]</span>
<span class="kw1">end</span></code></pre>
<p>É uma mudança sutil, porém, útil.</p>
<p>Para ele fazer parte do Rails 2.0 é preciso que pelo menos 3 pessoas testem-no e comentem com um simples +1, de acordo com <a href="http://weblog.rubyonrails.org/2007/9/15/how-to-get-a-patch-into-rails">as novas regras</a> para que um patch seja aceito no Rails.</p>
<p>Se você gostou da idéia, dê uma passadinha lá no <a href="http://dev.rubyonrails.org/ticket/9775">ticket</a>, aplique o patch e vote. :)</p>
<p><strong>Update</strong>: O Patch <a href="http://dev.rubyonrails.org/changeset/7973">agora faz parte do Rails 2.0</a>. Com algumas modificações e novas funcionalidades.</p>
<p>Para começar, “t.foreign_key” virou “t.references” com alias para “t.belongs_to&#8221;. E foi adicionado também uma opção &#8220;: polymorphic =&gt; true” que cria a coluna com _type no final.</p>
<p>Finalizando, se antes você escrevia assim (com o Rails Edge):</p>
<pre class="rails"><code>create_table <span class="re3">:taggings</span> <span class="kw1">do</span> |t|
  t.<span class="me1">integer</span> <span class="re3">:tag_id</span>, <span class="re3">:tagger_id</span>, <span class="re3">:taggable_id</span>
  t.<span class="me1">string</span>  <span class="re3">:tagger_type</span>
  t.<span class="me1">string</span>  <span class="re3">:taggable_type</span>, <span class="re3">:default</span> =&gt; <span class="st0">'Photo'</span>
<span class="kw1">end</span></code></pre>
<p>Agora passa a escrever assim:</p>
<pre class="rails"><code>create_table <span class="re3">:taggings</span> <span class="kw1">do</span> |t|
  t.<span class="me1">references</span> <span class="re3">:tag</span>
  t.<span class="me1">references</span> <span class="re3">:tagger</span>, <span class="re3">:polymorphic</span> =&gt; <span class="kw2">true</span>
  t.<span class="me1">references</span> <span class="re3">:taggable</span>, <span class="re3">:polymorphic</span> =&gt; <span class="br0">{</span> <span class="re3">:default</span> =&gt; <span class="st0">'Photo'</span> <span class="br0">}</span>
<span class="kw1">end</span></code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.arthurgeek.net/edge-migrations-mais-sexy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Edge Rails</title>
		<link>http://www.arthurgeek.net/edge-rails/</link>
		<comments>http://www.arthurgeek.net/edge-rails/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 14:26:00 +0000</pubDate>
		<dc:creator>ArthurGeek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[edge]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.arthurgeek.net/2007/09/26/edge-rails</guid>
		<description><![CDATA[Você tem acompanhado as mudanças do Edge Rails, e quer testá-las naquele projeto que está começando?
Fácil, é só digitar no terminal:
rails myapp
cd myapp
rake rails:freeze:edge
# e se você for sortudo e tiver o textmate :)
mate myapp
Certo? Não, errado! Infelizmente, estes comandos não atualizam sua app para o Edge (é engraçado, mas estes comandos funcionam em algumas [...]]]></description>
			<content:encoded><![CDATA[<p>Você tem <a href="http://dev.rubyonrails.org/timeline">acompanhado</a> as mudanças do Edge Rails, e quer testá-las naquele projeto que está começando?</p>
<p>Fácil, é só digitar no terminal:</p>
<pre><code>rails myapp
cd myapp
rake rails:freeze:edge
# e se você for sortudo e tiver o textmate :)
mate myapp</code></pre>
<p>Certo? Não, errado! Infelizmente, estes comandos não atualizam sua app para o Edge (é engraçado, mas estes comandos funcionam em algumas máquinas e na grande maioria não). Como saber se você está rodando o Edge? Verifique a pasta <strong>config</strong>, tem uma pasta <strong>initializers</strong> dentro dela? Se estiver rodando o edge tem que ter. Então, o que fazer para rodar o edge rails de verdade?</p>
<h3>No Edge de verdade</h3>
<p>Você precisa usar o comando <strong>rails</strong> de dentro do edge para gerar seu novo projeto.</p>
<pre><code>cd ..
ruby myapp/vendor/rails/railties/bin/rails myapp_edgier
# e se você for sortudo e tiver o textmate :)
mate myapp_edgier</code></pre>
<p>Agora verifique a pasta <strong>config</strong>. Hmm, legal! Aproveite e dê uma olhada na nova estrutura do <strong>environment.rb</strong>. Observe também que a pasta <strong>components</strong> não é mais criada.</p>
<p>Ok, agora você já está rodando um projeto no Edge, e resolveu criar mais um projeto. Vamos melhorar um pouco o processo. De volta ao terminal:</p>
<pre><code>cd ~
svn co http://svn.rubyonrails.org/rails/trunk rails_edge
ruby ~/rails_edge/railties/bin/rails my_second_edgier_app
cd my_second_edgier_app/
# Você ainda precisa ter o edge rails dentro de sua aplicação
ln -s ~/rails_edge/ vendor/rails
# e se você for sortudo e tiver o textmate :)
mate .</code></pre>
<p>Dessa maneira, você pode manter várias aplicações rodando o Edge, e atualizar o código em um local apenas. Quando você notar alguma mudança no Edge, rode:</p>
<pre><code>cd ~/rails_edge
svn up</code></pre>
<h3>Um pouco de shell script</h3>
<p>Vamos criar uma função em shell script para gerar novas aplicações já usando o Edge</p>
<pre><code>mate ~/.bash_profile</code></pre>
<p>Coloque a seguinte função no seu <strong>profile</strong>:</p>
<pre class="bash"><code><span class="kw1">function</span> edgie<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
  ruby ~/rails_edge/railties/bin/rails $<span class="nu0">1</span> &amp;&amp; <span class="kw3">cd</span> $<span class="nu0">1</span> &amp;&amp; ln -s ~/rails/trunk vendor/rails &amp;&amp; mate .
<span class="br0">&#125;</span></code></pre>
<p>Atualizando nosso profile:</p>
<pre><code>source ~/.bash_profile</code></pre>
<p>Pronto! Agora você pode rodar:</p>
<pre><code>edgie my_edge_app</code></pre>
<p>Boa diversão com o Edge Rails! :)</p>
<p>Fonte: <a href="http://railstips.org/2007/5/31/even-edgier-than-edge-rails">RailsTips: Even Edgier Than Edge Rails</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arthurgeek.net/edge-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Não posso usar o logotipo do Rails?</title>
		<link>http://www.arthurgeek.net/nao-posso-usar-o-logotipo-do-rails/</link>
		<comments>http://www.arthurgeek.net/nao-posso-usar-o-logotipo-do-rails/#comments</comments>
		<pubDate>Wed, 25 Jul 2007 13:18:00 +0000</pubDate>
		<dc:creator>ArthurGeek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.arthurgeek.net/2007/07/25/nao-posso-usar-o-logotipo-do-rails</guid>
		<description><![CDATA[O Carlos Brando levantou uma questão que, acredito eu, não deve ser do conhecimento de muitos:  Quem disse que você podia usar o logotipo do Rails?.
Bom, há um tempo atrás eu me interessei em fazer camisetas com o logo do Rails. E, eu sabia sobre o copyright, então, entrei em contato com o DHH, [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://www.nomedojogo.com/">Carlos Brando</a> levantou uma questão que, acredito eu, não deve ser do conhecimento de muitos: <a href="http://www.nomedojogo.com/2007/07/24/quem-disse-que-voce-podia-usar-o-logotipo-do-rails/"> Quem disse que você podia usar o logotipo do Rails?</a>.</p>
<p>Bom, há um tempo atrás eu me interessei em fazer camisetas com o logo do Rails. E, eu sabia sobre o copyright, então, entrei em contato com o <span class="caps">DHH</span>, pedindo autorização para uso do mesmo.</p>
<p>Segue meu e-mail:</p>
<blockquote><p>
Hi David!</p>
<p>I&#8217;m a Brazilian Rails developer.</p>
<p>Next month I&#8217;ll be teaching a RoR training in a local university, and I<br />
want permission to make some RoR T-Shirts. Can I use the logo on those<br />
t-shirts?</p>
<p>If yes, there&#8217;s a high-resolution available somewhere in the net?</p>
<p>Thanks in advance,</p>
<p>Arthur Zapparoli<br />
http://www.arthurgeek.net
</p></blockquote>
<p>E a resposta do <span class="caps">DHH</span>:</p>
<blockquote><p>
As long as you don&#8217;t sell them, it&#8217;s ok.</p>
<p>http://wiki.rubyonrails.org/rails/pages/RubyOnRailsMedia
</p></blockquote>
<p>Como o próprio <a href="http://rethink.unspace.ca/2007/7/23/beginning-rails-from-novice-to-professional#comments"><span class="caps">DHH</span> comentou</a>  , casos como esse, não são exclusividade do Rails. Muitos projetos Open Source tem seu logo como marca registrada. <span class="caps">O DHH</span> menciona o MySQL, JBoss, e eu menciono um caso mais &#8220;famoso&#8221; como o do <a href="http://www.internetnews.com/dev-news/article.php/3634591">Firefox vs Debian</a> que resultou no fork <a href="http://en.wikipedia.org/wiki/Iceweasel">Iceweasel</a>.</p>
<p>O comentário do <span class="caps">DHH</span>:</p>
<blockquote><p>
The use of the logo is restricted as it always is when talking about a trademark. When the logo is used in a commercial setting, such as part of the promotion of a book, it legally requires that the trademark holder has been involved and stands behind the quality of the book. If that&#8217;s not the case, you&#8217;re on the way to lose your trademark.</p>
<p>So I only grant promotional use for products I’m directly involved with. Such as books that I’ve been part of the development process for or conferences where I have a say in the execution.</p>
<p>I simply don’t have the time (or, frankly, the inclination) to be intimately involved with every book being written about Rails.
</p></blockquote>
<p>Isso faz do <span class="caps">DHH</span> um &#8220;bad guy&#8221;? Eu não acho! Pode ser ruim para a divulgação de livros sobre Rails? Pode até ser que sim, mas preste atenção nos livros da <a href="http://www.oreilly.com/">O&#8217;Reilly</a>, a maioria não usam o logo na capa.</p>
<p><span class="caps">O DHH</span> tem que se preocupar com toda a qualidade de qualquer material que use o nome e o logo do Rails. E isso, não é bom somente para o <span class="caps">DHH</span>, e sim, para toda a comunidade.</p>
<p>O Carlos menciona o fato de ter sempre que pedir permissão à uma pessoa apenas. Sobre isso, eu acho, que poderia ser criado uma &#8220;Rails Foundation&#8221; que passaria a ter o copyright sobre o logo, e os nomes. E os membros dessa fundação analisariam dar permissão sobre o uso do logo. Acho que seria uma boa solução, adotada em alguns projetos como o Mozilla e o Gentoo.</p>
<p>Ah, e sobre as camisetas: o curso acabou não dando certo (não fechamos uma turma com o mínimo de alunos necessários), então, não fiz a camiseta. Ainda. Mas, eu ainda estou interessado. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arthurgeek.net/nao-posso-usar-o-logotipo-do-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Traduzindo Datas no Rails</title>
		<link>http://www.arthurgeek.net/traduzindo-datas-no-rails/</link>
		<comments>http://www.arthurgeek.net/traduzindo-datas-no-rails/#comments</comments>
		<pubDate>Sat, 23 Jun 2007 15:50:00 +0000</pubDate>
		<dc:creator>ArthurGeek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.arthurgeek.net/2007/06/23/traduzindo-datas-no-rails</guid>
		<description><![CDATA[Em alguns projetos, é necessário utilizar os nomes de meses, ou dias da semana em português. Eu sempre usei o método de sobrescrever as constantes que o Ruby usa, colocando o seguinte código no config/environment.rb:
silence_warnings do
  Date::MONTHNAMES = [nil] + %w(Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro)
  Date::DAYNAMES [...]]]></description>
			<content:encoded><![CDATA[<p>Em alguns projetos, é necessário utilizar os nomes de meses, ou dias da semana em português. Eu sempre usei o método de sobrescrever as constantes que o Ruby usa, colocando o seguinte código no <em>config/environment.rb</em>:</p>
<pre class="rails"><code>silence_warnings <span class="kw1">do</span>
  <span class="re2">Date::MONTHNAMES</span> = <span class="br0">[</span><span class="kw2">nil</span><span class="br0">]</span> + %w<span class="br0">(</span>Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro<span class="br0">)</span>
  <span class="re2">Date::DAYNAMES</span> = %w<span class="br0">(</span>Domingo Segunda-Feira Terça-Feira Quarta-Feira Quinta-Feira Sexta-Feira Sábado<span class="br0">)</span>
  <span class="re2">Date::ABBR_MONTHNAMES</span> = <span class="br0">[</span><span class="kw2">nil</span><span class="br0">]</span> + %w<span class="br0">(</span>Jan Fev Mar Abr Mai Jun Jul Aug <span class="kw4">Set</span> Out Nov Dez<span class="br0">)</span>
  <span class="re2">Date::ABBR_DAYNAMES</span> = %w<span class="br0">(</span>Dom Seg Ter Qua Qui Sex Sab<span class="br0">)</span>
 
  <span class="re2">Time::MONTHNAMES</span> = <span class="re2">Date::MONTHNAMES</span>
  <span class="re2">Time::DAYNAMES</span> = <span class="re2">Date::DAYNAMES</span>
  <span class="re2">Time::ABBR_MONTHNAMES</span> = <span class="re2">Date::ABBR_MONTHNAMES</span>
  <span class="re2">Time::ABBR_DAYNAMES</span> = <span class="re2">Date::ABBR_DAYNAMES</span>
<span class="kw1">end</span></code></pre>
<p>Acontece, que quando usamos a função <em>strftime</em>, estes nomes não são traduzidos. Eles funcionam apenas nos helpers <em>date_select</em>, entro outros. Em um projeto meu, eu precisava usar estes nomes traduzidos, justamente com a função <em>strftime</em>, então, cheguei à este código:</p>
<pre class="rails"><code><span class="kw1">class</span> <span class="kw4">Time</span>
  <span class="kw1">alias</span> <span class="re3">:strftime_nolocale</span> <span class="re3">:strftime</span>
 
  <span class="kw1">def</span> strftime<span class="br0">(</span><span class="kw3">format</span><span class="br0">)</span>
    <span class="kw3">format</span> = <span class="kw3">format</span>.<span class="me1">dup</span>
    <span class="kw3">format</span>.<span class="kw3">gsub</span>!<span class="br0">(</span>/%a/, <span class="re2">Date::ABBR_DAYNAMES</span><span class="br0">[</span><span class="kw2">self</span>.<span class="me1">wday</span><span class="br0">]</span><span class="br0">)</span>
    <span class="kw3">format</span>.<span class="kw3">gsub</span>!<span class="br0">(</span>/%A/, <span class="re2">Date::DAYNAMES</span><span class="br0">[</span><span class="kw2">self</span>.<span class="me1">wday</span><span class="br0">]</span><span class="br0">)</span>
    <span class="kw3">format</span>.<span class="kw3">gsub</span>!<span class="br0">(</span>/%b/, <span class="re2">Date::ABBR_MONTHNAMES</span><span class="br0">[</span><span class="kw2">self</span>.<span class="me1">mon</span><span class="br0">]</span><span class="br0">)</span>
    <span class="kw3">format</span>.<span class="kw3">gsub</span>!<span class="br0">(</span>/%B/, <span class="re2">Date::MONTHNAMES</span><span class="br0">[</span><span class="kw2">self</span>.<span class="me1">mon</span><span class="br0">]</span><span class="br0">)</span>
    <span class="kw2">self</span>.<span class="me1">strftime_nolocale</span><span class="br0">(</span><span class="kw3">format</span><span class="br0">)</span>
  <span class="kw1">end</span>
<span class="kw1">end</span></code></pre>
<p>E funcionou!</p>
<p>Fica aqui a dica então, para quem estiver com este mesmo problema.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arthurgeek.net/traduzindo-datas-no-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cansado daquele &quot;;&quot; horrível em sua url?</title>
		<link>http://www.arthurgeek.net/cansado-daquele-ponto-e-virgula-horrivel-em-sua-url/</link>
		<comments>http://www.arthurgeek.net/cansado-daquele-ponto-e-virgula-horrivel-em-sua-url/#comments</comments>
		<pubDate>Wed, 06 Jun 2007 18:02:00 +0000</pubDate>
		<dc:creator>ArthurGeek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://www.arthurgeek.net/2007/06/21/cansado-daquele-ponto-e-virgula-horrivel-em-sua-url</guid>
		<description><![CDATA[Uma das coisas que eu mais gosto no Rails, é o rewriting das URLs, nada de ficar usando: dispatch.cgi?controller=people&#38;action=edit&#38;id=1, é simplesmente: /people/edit/1. É algo simples, é algo besta, mas vamos concordar, é muito mais fácil de lembrar e muito mais bonito. não? Porém, com o Rails 1.2 e o suporte à REST eu reclamo toda [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das coisas que eu mais gosto no Rails, é o rewriting das URLs, nada de ficar usando: dispatch.cgi?controller=people&#38;action=edit&#38;id=1, é simplesmente: /people/edit/1. É algo simples, é algo besta, mas vamos concordar, é muito mais fácil de lembrar e muito mais bonito. não? Porém, com o Rails 1.2 e o suporte à <a href="http://pt.wikipedia.org/wiki/REST"><span class="caps">REST</span></a> eu reclamo toda vez que olho para URLs assim:</p>
<pre><code>/people/1;edit
/orders;recent</code></pre>
<p>Que coisa feia esse &#8221;;&#8221;!</p>
<p>Ainda bem que o Rails 2.0 <a href="http://dev.rubyonrails.org/changeset/6485">voltará a usar</a> a boa, velha e bonita &#8221;/&#8221;! :)</p>
<p>Acompanhe como usar este recurso nos seus projetos sem precisar esperar pelo Rails 2.0!</p>
<p>            <span id="more-66"></span></p>
<h3>O patch</h3>
<p>Crie um arquivo chamado <em>fix_resource_routing</em> em /lib com o seguinte conteúdo:</p>
<pre class="rails"><code><span class="kw1">module</span> ActionController
  <span class="kw1">module</span> Resources
    private
    <span class="kw1">def</span> map_collection_actions<span class="br0">&#40;</span>map, resource<span class="br0">&#41;</span>
      resource.<span class="me1">collection_methods</span>.<span class="kw5">each</span> <span class="kw1">do</span> |method, actions|
        actions.<span class="kw5">each</span> <span class="kw1">do</span> |action|
          action_options = action_options_for<span class="br0">&#40;</span>action, resource, method<span class="br0">&#41;</span>
          map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.name_prefix}#{action}_#{resource.plural}&quot;</span>, <span class="st0">&quot;#{resource.path}/#{action}&quot;</span>, action_options<span class="br0">&#41;</span>
          map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;formatted_#{resource.name_prefix}#{action}_#{resource.plural}&quot;</span>, <span class="st0">&quot;#{resource.path}/#{action}.:format&quot;</span>, action_options<span class="br0">&#41;</span>
        <span class="kw1">end</span>
      <span class="kw1">end</span>
    <span class="kw1">end</span>
&nbsp;
    <span class="kw1">def</span> map_new_actions<span class="br0">&#40;</span>map, resource<span class="br0">&#41;</span>
      resource.<span class="me1">new_methods</span>.<span class="kw5">each</span> <span class="kw1">do</span> |method, actions|
        actions.<span class="kw5">each</span> <span class="kw1">do</span> |action|
          action_options = action_options_for<span class="br0">&#40;</span>action, resource, method<span class="br0">&#41;</span>
          <span class="kw1">if</span> action == <span class="re3">:new</span>
            map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.name_prefix}new_#{resource.singular}&quot;</span>, resource.<span class="me1">new_path</span>, action_options<span class="br0">&#41;</span>
            map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;formatted_#{resource.name_prefix}new_#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.new_path}.:format&quot;</span>, action_options<span class="br0">&#41;</span>
          <span class="kw1">else</span>
            map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.name_prefix}#{action}_new_#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.new_path}/#{action}&quot;</span>, action_options<span class="br0">&#41;</span>
            map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;formatted_#{resource.name_prefix}#{action}_new_#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.new_path}/#{action}.:format&quot;</span>, action_options<span class="br0">&#41;</span>
          <span class="kw1">end</span>
        <span class="kw1">end</span>
      <span class="kw1">end</span>
    <span class="kw1">end</span>
&nbsp;
    <span class="kw1">def</span> map_member_actions<span class="br0">&#40;</span>map, resource<span class="br0">&#41;</span>
      resource.<span class="me1">member_methods</span>.<span class="kw5">each</span> <span class="kw1">do</span> |method, actions|
        actions.<span class="kw5">each</span> <span class="kw1">do</span> |action|
          action_options = action_options_for<span class="br0">&#40;</span>action, resource, method<span class="br0">&#41;</span>
          map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.name_prefix}#{action}_#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.member_path}/#{action}&quot;</span>, action_options<span class="br0">&#41;</span>
          map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;formatted_#{resource.name_prefix}#{action}_#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.member_path}/#{action}.:format&quot;</span>,action_options<span class="br0">&#41;</span>
        <span class="kw1">end</span>
      <span class="kw1">end</span>
&nbsp;
      show_action_options = action_options_for<span class="br0">&#40;</span><span class="st0">&quot;show&quot;</span>, resource<span class="br0">&#41;</span>
      map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.name_prefix}#{resource.singular}&quot;</span>, resource.<span class="me1">member_path</span>, show_action_options<span class="br0">&#41;</span>
      map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;formatted_#{resource.name_prefix}#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.member_path}.:format&quot;</span>, show_action_options<span class="br0">&#41;</span>
&nbsp;
      update_action_options = action_options_for<span class="br0">&#40;</span><span class="st0">&quot;update&quot;</span>, resource<span class="br0">&#41;</span>
      map.<span class="me1">connect</span><span class="br0">&#40;</span>resource.<span class="me1">member_path</span>, update_action_options<span class="br0">&#41;</span>
      map.<span class="me1">connect</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.member_path}.:format&quot;</span>, update_action_options<span class="br0">&#41;</span>
&nbsp;
      destroy_action_options = action_options_for<span class="br0">&#40;</span><span class="st0">&quot;destroy&quot;</span>, resource<span class="br0">&#41;</span>
      map.<span class="me1">connect</span><span class="br0">&#40;</span>resource.<span class="me1">member_path</span>, destroy_action_options<span class="br0">&#41;</span>
      map.<span class="me1">connect</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.member_path}.:format&quot;</span>, destroy_action_options<span class="br0">&#41;</span>
    <span class="kw1">end</span>
&nbsp;
  <span class="kw1">end</span>
<span class="kw1">end</span></code></pre>
<p>Agora, no final do <em>config/environment.rb</em> adicione esta linha:</p>
<pre class="rails"><code><span class="kw3">require</span> <span class="st0">'fix_resource_routing'</span></code></pre>
<p>Pronto! Agora nossas URLs voltaram a ficar bonitas como antes, e quando o Rails 2.0 sair, nossos permalinks não irão mudar!</p>
<p>Vi este patch em: <a href="http://www.stephenbartholomew.co.uk/2007/6/5/using-rails-edge-style-resource-actions-now">Using Rails Edge-style resource actions now</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arthurgeek.net/cansado-daquele-ponto-e-virgula-horrivel-em-sua-url/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Test Helpers</title>
		<link>http://www.arthurgeek.net/test-helpers/</link>
		<comments>http://www.arthurgeek.net/test-helpers/#comments</comments>
		<pubDate>Mon, 04 Jun 2007 18:40:00 +0000</pubDate>
		<dc:creator>ArthurGeek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[helpers]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://www.arthurgeek.net/2008/04/03/test-helpers</guid>
		<description><![CDATA[Desde que entrei no mundo do Test-Driven-Development, venho colecionando alguns helpers, específicos para testes. Estes helpers me ajudam a não-ficar-se-repetindo (DRY ).
Acompanhe a lista de helpers que eu passei a utilizar.

Temos os já consagrados deny, assert_invalid, assert_difference e assert_no_difference. Estes 2 últimos, já fazem parte do trunk do Rails 2.0. Tem também 2 helpers que [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que entrei no mundo do <a href="http://en.wikipedia.org/wiki/Test-driven_development">Test-Driven-Development</a>, venho colecionando alguns helpers, específicos para testes. Estes helpers me ajudam a não-ficar-se-repetindo (<a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself"><span class="caps">DRY</span></a> ).</p>
<p>Acompanhe a lista de helpers que eu passei a utilizar.</p>
<p><span id="more-65"></span></p>
<p>Temos os já consagrados <em>deny</em>, <em>assert_invalid</em>, <em>assert_difference</em> e <em>assert_no_difference</em>. Estes 2 últimos, já fazem parte do trunk do Rails 2.0. Tem também 2 helpers que eu criei, e um que eu reescrevi.</p>
<h3>Códigos</h3>
<p>Estes métodos vão dentro do arquivo test/test_helper.rb</p>
<pre class="rails"><code><span class="kw1">def</span> deny<span class="br0">(</span>condition, message=<span class="st0">""</span><span class="br0">)</span>
  assert !condition, message
<span class="kw1">end</span>
 
<span class="kw1">def</span> assert_invalid<span class="br0">(</span>record, message=<span class="st0">""</span><span class="br0">)</span>
  deny record.<span class="me1">valid</span>?, message
<span class="kw1">end</span>
 
<span class="kw1">def</span> assert_difference<span class="br0">(</span>expression, difference = <span class="nu0">1</span>, &amp;block<span class="br0">)</span>
  expression_evaluation = <span class="kw3">lambda</span> <span class="br0">{</span> <span class="kw3">eval</span><span class="br0">(</span>expression, block.<span class="kw3">binding</span><span class="br0">)</span> <span class="br0">}</span>
  original_value        = expression_evaluation.<span class="kw5">call</span>
  <span class="kw1">yield</span>
  <span class="kw5">assert_equal</span> original_value + difference, expression_evaluation.<span class="kw5">call</span>
<span class="kw1">end</span>
 
<span class="kw1">def</span> assert_no_difference<span class="br0">(</span>expression, &amp;block<span class="br0">)</span>
  assert_difference expression, <span class="nu0">0</span>, &amp;block
<span class="kw1">end</span>
 
<span class="kw1">def</span> assert_select_errors<span class="br0">(</span>*messages<span class="br0">)</span>
  assert_select <span class="st0">"div#errorExplanation"</span> <span class="kw1">do</span>
    assert_select <span class="st0">"ul"</span> <span class="kw1">do</span>
      assert_select <span class="st0">"li"</span> , <span class="re3">:count</span> =&gt; messages.<span class="kw5">size</span>
      <span class="nu0">1</span>.<span class="me1">upto</span><span class="br0">(</span>messages.<span class="kw5">size</span><span class="br0">)</span> <span class="kw1">do</span> |num|
        assert_select <span class="st0">"li:nth-child(#{num})"</span>, <span class="st0">"#{messages[num-1]}"</span>
      <span class="kw1">end</span>
    <span class="kw1">end</span>
  <span class="kw1">end</span>
<span class="kw1">end</span>
 
<span class="kw1">def</span> assert_select_form<span class="br0">(</span>&amp;block<span class="br0">)</span>
  assert_select <span class="st0">"div.form"</span> <span class="kw1">do</span>
    assert_select <span class="st0">"dl"</span> <span class="kw1">do</span>
      <span class="kw1">yield</span>
      assert_select <span class="st0">"dd"</span>
    <span class="kw1">end</span>
  <span class="kw1">end</span>
<span class="kw1">end</span>
 
<span class="kw1">def</span> assert_redirected_to<span class="br0">(</span>options = <span class="br0">{</span><span class="br0">}</span>, message=<span class="kw2">nil</span><span class="br0">)</span>
  <span class="kw1">super</span>
  follow_redirect
  assert_response <span class="re3">:success</span>
<span class="kw1">end</span></code></pre>
<h3>Uso</h3>
<h4>assert_difference</h4>
<pre class="rails"><code><span class="kw1">def</span> test_should_destroy
  assert_difference <span class="st0">"User.count"</span>, <span class="nu0">-1</span> <span class="kw1">do</span>
    <span class="kw5">delete</span> <span class="re3">:destroy</span>, <span class="re3">:id</span> =&gt; <span class="nu0">1</span>
  <span class="kw1">end</span>
<span class="kw1">end</span>
 
<span class="kw1">def</span> test_should_create
  assert_difference <span class="st0">"User.count"</span> <span class="kw1">do</span>
    post <span class="re3">:create</span>, <span class="re3">:user</span> =&gt; <span class="br0">{</span><span class="br0">}</span>
  <span class="kw1">end</span>
<span class="kw1">end</span></code></pre>
<h4>assert_no_difference</h4>
<pre class="rails"><code><span class="kw1">def</span> test_should_update
  assert_no_difference <span class="st0">"User.count"</span> <span class="kw1">do</span>
    put <span class="re3">:update</span>, <span class="re3">:id</span> =&gt; <span class="nu0">1</span>, <span class="re3">:user</span> =&gt; <span class="br0">{</span><span class="br0">}</span>
  <span class="kw1">end</span>
<span class="kw1">end</span></code></pre>
<h4>assert_invalid</h4>
<pre class="rails"><code><span class="kw1">def</span> test_should_require_name
  user = User.<span class="me1">create</span><span class="br0">(</span><span class="re3">:name</span> =&gt; <span class="kw2">nil</span><span class="br0">)</span>
  assert_invalid user
<span class="kw1">end</span></code></pre>
<h4>deny</h4>
<pre class="rails"><code><span class="kw1">def</span> test_should_require_name
  user = User.<span class="me1">create</span><span class="br0">(</span><span class="re3">:name</span> =&gt; <span class="kw2">nil</span><span class="br0">)</span>
  deny user.<span class="me1">valid</span>?
<span class="kw1">end</span></code></pre>
<h4>assert_select_form</h4>
<pre class="rails"><code><span class="kw1">def</span> test_should_get_new
  assert_select_form <span class="kw1">do</span>
    assert_select <span class="st0">"dt:nth-child(1)"</span> <span class="kw1">do</span>
      assert_select <span class="st0">"label"</span>, <span class="st0">"Name"</span>
    <span class="kw1">end</span>
  <span class="kw1">end</span>
<span class="kw1">end</span></code></pre>
<h4>assert_select_errors</h4>
<pre class="rails"><code><span class="kw1">def</span> test_should_display_errors
  user = User.<span class="me1">create</span><span class="br0">(</span><span class="re3">:name</span> =&gt; <span class="kw2">nil</span>, <span class="re3">:surname</span> =&gt; <span class="kw2">nil</span><span class="br0">)</span>
  assert_select_errors <span class="st0">"Name can't be blank"</span>, <span class="st0">"Surname can't be blank"</span>
<span class="kw1">end</span></code></pre>
<p>E o <em>assert_redirected_to</em> chama o helper original, e usa o follow_redirect para saber se tudo ocorreu bem com o redirect.</p>
<p>Ah, e se você ainda não entrou nessa de <span class="caps">TDD</span>, dê uma olhada <a href="http://simplesideias.com.br/tdd-no-rails-unit-tests/">neste artigo</a> escrito pelo <a href="http://simplesideias.com.br/">Nando Vieira</a> sobre Unit Tests. Muito boa referência em português!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arthurgeek.net/test-helpers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
