<?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>Vinicius Ebersol &#187; Ruby on Rails</title>
	<atom:link href="http://vebersol.net/category/ruby-on-rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://vebersol.net</link>
	<description>Blog on Rails</description>
	<lastBuildDate>Wed, 19 May 2010 22:48:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Substituir tag por dados do banco utilizando Ruby on Rails</title>
		<link>http://vebersol.net/2010/05/19/substituir-tag-por-dados-do-banco-utilizando-ruby-on-rails/</link>
		<comments>http://vebersol.net/2010/05/19/substituir-tag-por-dados-do-banco-utilizando-ruby-on-rails/#comments</comments>
		<pubDate>Wed, 19 May 2010 22:46:50 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://vebersol.net/?p=144</guid>
		<description><![CDATA[Muitas vezes procuramos dar mais independência ao cliente, possibilitando o mínimo de intervenção  possível em uma aplicação, por menor que seja. Hoje pela manhã, enquanto pesquisava algum CMS simples em Rails, encontrei uma funcionalidade muito interessante no Radiant, que permite ao usuário adicionar tags. Ele mostra uma popup com tags disponíveis que são métodos [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes procuramos dar mais independência ao cliente, possibilitando o mínimo de intervenção  possível em uma aplicação, por menor que seja. Hoje pela manhã, enquanto pesquisava algum CMS simples em Rails, encontrei uma funcionalidade muito interessante no <a href="http://radiantcms.org/">Radiant</a>, que permite ao usuário adicionar tags. Ele mostra uma popup com tags disponíveis que são métodos como: escape_html, author, date. Estes métodos são próprios do CMS e não era exatamente o que eu estava procurando no momento.</p>
<p>O que eu pensei era permitir que um usuário comum pudesse facilmente exibir um dado contido dentro do modelo Post. Por exemplo, você deseja pôr a data da última atualização dos dados. Seu objeto Post tem um campo chamado updated_at. Para pôr isso no texto a idéia é que você utilize uma tag especial que será substituída pelo dado capturado do banco. Foi pensando nisso e baseado nas tags do Radiant que eu fiz o código abaixo:</p>
<pre><span class="keyword">class</span> <span class="type">Post</span> &lt; <span class="type">ActiveRecord</span>::<span class="type">Base</span>
  belongs_to <span class="constant">:category</span>
  validates_presence_of <span class="constant">:name</span>, <span class="constant">:title</span>, <span class="constant">:body</span>, <span class="constant">:permalink</span>, <span class="constant">:user_id</span>, <span class="constant">:category_id</span>

<span class="comment-delimiter">  # </span><span class="comment">Method to replace your special tag.
</span>  <span class="keyword">def</span> <span class="function-name">self.replace_special_tags</span>(object, field)
    text = eval(<span class="string">'object.'</span>+field)
    <span class="keyword">if</span> !text.blank?
      tags = <span class="variable-name">self</span>.get_tags(text)
      <span class="keyword">if</span> !tags.blank?
        tags.each <span class="keyword">do</span> |tag|
          text = text.gsub(tag.to_s, <span class="variable-name">self</span>.get_param(tag, object))
        <span class="keyword">end</span>
      <span class="keyword">end</span>
    <span class="keyword">end</span>
    <span class="keyword">return</span> text
  <span class="keyword">end</span>

  <span class="comment-delimiter"># </span><span class="comment">After catch your tags, pass the tag and object that you need to use.
</span>  <span class="keyword">def</span> <span class="function-name">self.get_param</span>(tag, object)
    pattern = <span class="string">/[^&lt;r:].*[^ \/&gt;]/</span>
    param = tag.to_s[pattern]
    replace = object.respond_to?(param.split(<span class="string">'.'</span>).first) ? eval(<span class="string">'object.'</span>+param) : <span class="variable-name">nil</span>
    <span class="keyword">if</span> !replace.blank?
      <span class="keyword">return</span> replace.to_s
    <span class="keyword">else</span>
      <span class="keyword">return</span> <span class="string">'&lt;!-- wrong field --&gt;'</span>
    <span class="keyword">end</span>
  <span class="keyword">end</span>

  <span class="comment-delimiter"># </span><span class="comment">Get all special tags on text
</span>  <span class="keyword">def</span> <span class="function-name">self.get_tags</span>(text)
    pattern = <span class="string">/(&lt;r:[a-z\.]+ \/&gt;)/</span>
    <span class="keyword">if</span> !text.scan(pattern).blank?
      text.scan(pattern)
    <span class="keyword">end</span>
  <span class="keyword">end</span>
<span class="keyword">end</span>
</pre>
<p>O modelo acima permite exibir dados direto do banco  ao passar um objeto e o respectivo campo de texto que contém as tags especiais. Vejamos como funciona na prática:</p>
<pre><span class="type">Post</span>.replace_special_tags(<span class="variable-name">@post</span>, <span class="string">'body'</span>)</pre>
<p>Assim, todas as tags especiais que eu adicionar ao campo <em>body</em> serão substituídas pelo campo correspondente no objeto @post. Vejamos um exemplo do nosso objeto:</p>
<p><code><br />
&gt;&gt; @post<br />
=&gt; #&lt;Post id: 1, name: "Minha página de teste", title: "Titulo da minha página de teste", body: "&lt;p&gt;Ah!!&lt;/p&gt;\r\n\r\n&lt;ul&gt;\r\n  &lt;li&gt;&lt;strong&gt;Nome da categori...", permalink: "minha-pagina-de-teste", active: false, public: nil, user_id: 1, category_id: 26, created_at: "2010-05-19 21:39:52", updated_at: "2010-05-19 21:39:52"&gt;</code></p>
<p>Nesse caso, o post pertence a uma categoria:</p>
<p><code><br />
&gt;&gt; @post.category<br />
=&gt; #&lt;Category id: 26, name: "Minha categoria de teste", permalink: "minha-categoria-de-teste", parent_id: nil, created_at: "2010-05-19 22:09:16", updated_at: "2010-05-19 22:09:16"&gt;<br />
</code></p>
<p>Portanto, você pode utilizar, por exemplo:</p>
<ul>
<li>&lt;r:title /&gt;</li>
<li>&lt;r:user_id /&gt; * em breve, um relacionamento poderá permitir acesso aos dados do usuário. Mas cuidado com as permissões aqui. É muito importante limitar o uso deste recurso.</li>
<li>&lt;r:category.name /&gt;</li>
<li>&lt;r:category.permalink /&gt;</li>
</ul>
<p>Na prática, seu campo body ser assim:</p>
<pre>&lt;p&gt;My replace tags test&lt;/p&gt;
&lt;dl&gt;
  &lt;dt&gt;My category name:&lt;/dt&gt;
  &lt;dd&gt;&lt;r:category.name /&gt;&lt;/dd&gt;
  &lt;dt&gt;My category permalink:&lt;/dt&gt;
  &lt;dd&gt;&lt;r:category.permalink /&gt;&lt;/dd&gt;
  &lt;dt&gt;My post permalink:&lt;/dt&gt;
  &lt;dd&gt;&lt;r:permalink /&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class="breadcrumb"&gt;
  &lt;a href="/categories/&lt;r:category.permalink&gt;"&gt;&lt;span&gt;&lt;r:category.name&gt;&lt;/span&gt;&lt;/a&gt; |
  &lt;a  href="/categories/&lt;r:category.permalink&gt;/post/&lt;r:permalink&gt;"&gt;&lt;span&gt;&lt;r:name&gt;&lt;/span&gt;&lt;/a&gt;
&lt;/div&gt;</pre>
<p>Acima estão somente alguns exemplos de dados que você pode utilizar. Como o método que eu criei não limita a utilização de campos, tudo que você chamar do objeto @post será exibido, se existir. O interessante a partir daqui é pensar em criar uma lista dos dados &#8220;acessíveis&#8221; para permitir chamar somente estes, tornando a utilização deste método muito mais segura.</p>
<p>Ps.: Desculpem pelo título, porém não encontrei nada que pudesse descrever isso em poucas palavras e da forma correta. Recebo sugestões.</p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2010/05/19/substituir-tag-por-dados-do-banco-utilizando-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>drails &#8211; Dojo + Rails</title>
		<link>http://vebersol.net/2009/09/15/drails-dojo-rails/</link>
		<comments>http://vebersol.net/2009/09/15/drails-dojo-rails/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 13:04:54 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://vebersol.net/?p=125</guid>
		<description><![CDATA[
Dica rápida para quem se interessou no post anterior sobre Dojo. Eu pesquisei e encontrei um plugin que substitui os helpers do Rails para utilizar Dojo ao invés de Prototype. É o drails.
A instalação é simples:
# drails relies on the dojo-pkg gem.  Installing this gem can sometimes take a while
gem install dojo-pkg

cd my_rails_app
script/plugin install git://github.com/foobarfighter/drails.git
Para [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-129 aligncenter" title="drails" src="http://vebersol.net/wp-content/uploads/2009/09/drails.png" alt="drails" width="273" height="123" /></p>
<p>Dica rápida para quem se interessou no post anterior sobre <a href="http://dojotoolkit.org/">Dojo</a>. Eu pesquisei e encontrei um plugin que substitui os helpers do <a href="http://rubyonrails.com">Rails</a> para utilizar Dojo ao invés de <a href="http://prototypejs.org/">Prototype</a>. É o <a href="http://d-rails.org/">drails</a>.</p>
<h3>A instalação é simples:</h3>
<pre># drails relies on the dojo-pkg gem.  Installing this gem can sometimes take a while
gem install dojo-pkg

cd my_rails_app
script/plugin install git://github.com/foobarfighter/drails.git</pre>
<p>Para maiores informações acesse o <a href="http://github.com/foobarfighter/drails/tree/v1.0.0">README</a> do plugin no github.</p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2009/09/15/drails-dojo-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dicas para otimizar o Redmine</title>
		<link>http://vebersol.net/2009/02/25/dicas-para-otimizar-o-redmine/</link>
		<comments>http://vebersol.net/2009/02/25/dicas-para-otimizar-o-redmine/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 22:13:00 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">tag:vebersol.net,2009-02-25:164</guid>
		<description><![CDATA[A cada atualização do Redmine tenho notado as mudanças e quão significante elas são. O Redmine ainda nem chegou a versão 1.0 e na minha opinião já é significativamente melhor que alguns gerenciadores de projeto. Por exemplo, compará-lo com o Jira (licensa de $4,800 anuais) é piada. Redmine é software livre e muito mais completo.
Em [...]]]></description>
			<content:encoded><![CDATA[<p>A cada atualização do <a href="http://redmine.org">Redmine</a> tenho notado as mudanças e quão significante elas são. O Redmine ainda nem chegou a versão 1.0 e na minha opinião já é significativamente melhor que alguns gerenciadores de projeto. Por exemplo, compará-lo com o <a href="http://www.atlassian.com/software/jira/">Jira</a> (licensa de $4,800 anuais) é piada. <strong>Redmine</strong> é software livre e muito mais completo.</p>
<p>Em sua versão padrão ele é muito bom, mas imagine que existem muitos plugins para turbinar o seu Redmine. Segue abaixo uma lista de plugins extraída da <a href="http://www.redmine.org/wiki/redmine/Plugins">wiki do Redmine</a>:</p>
<h3>Plugin list</h3>
<ul>
<li><a href="http://www.redmine.org/wiki/redmine/BotsFilterPlugin">BotsFilterPlugin</a> previne URLs contra indexação de mecanismos de busca.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginBulkTimeEntry">Bulk Time Entry</a> adiciona múltiplas entradas de tempo de uma vez só.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginBudget">Budget</a> é um plugin para gerenciar o conjunto de resultados de cada projecto, automaticamente calcula alguns indicadores de desempenho.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginCollapse">Collapse</a> transforma a barra lateral padrão do Redmine para uma barra expansível.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginCustomer">Customer</a> gerencia informações básicas do cliente e analisa os projetos deste cliente.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginEmbedded">Embedded</a> permite enviar arquivos <span class="caps">HTML</span> (ex.: documentação auto-gerada, resultados de testes) em seu projeto.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginExceptionHandler">Exception Handler</a> habilita o Redmine a enviar e-mails quando algum erro ou excessão ocorrer.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginEzfaq">ezFAQ</a> gerenciador de <span class="caps">FAQ</span> para redmine.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginEzlibrarian">ezLibrarian</a> cria um módulo que serve para a gestão de seus livros em sua empresa.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginGoogleAnalytics">Google Analytics</a> inclui de um modo simples o Google Analytics no Redmine.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginGoogleCalendar">Google Calendar</a> integra o Redmine com o Google Calendar.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginProjectScores">Project Scores</a> permite ao usuário atribuir uma pontuação ao projeto, incluindo muitos critéiros de análise.</li>
<li><a href="http://github.com/yugui/redmine_rd_formatter/tree/master">RD formatter</a> permite formatar texto no estilo Ruby Doc</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginQuestion">Question</a> plugin que permite comunicação entre usuários nas tarefas.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginSimpleCI">Simple CI</a> </li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginStuffToDo">Stuff To Do</a> Permite o usuário atribuir a ordem das tarefas atribuídas a ele.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginSystemNotification">System Notification</a> habilitao  Administrador a enviar notificações por email para usuários recem logados.</li>
<li><a href="http://www.redmine.org/wiki/redmine/PluginTimesheet">Timesheet</a> plugin para análise de horas trabalhadas de cada usuário, por projeto.</li>
</ul>
<p>Encontre mais plugins no <a href="http://github.com/search?type=Repositories&amp;language=&amp;q=redmine&amp;repo=&amp;langOverride=&amp;x=0&amp;y=0&amp;start_value=1">GitHub</a>.</p>
<p>Dica: Siga o <a href="http://www.redmine.org/wiki/redmine/Plugin_Tutorial">tutorial de como criar um plugin para o Redmine</a>.</p>
<h3>Como instalar um plugin</h3>
<p>1. Se você está usando a versão 0.7.x, você precisa instalar o <a href="http://rails-engines.org/">Rails engines plugin</a> (certifique-se de que esteja usando a versão 2.0.2 do Rails). A partir da versão 0.8.0 o <strong>Rails engines plugin</strong> já está incluso no Redmine, então não precisa seguir este passo.</p>
<pre>
ruby script/plugin install http://svn.rails-engines.org/engines/tags/rel_2.0.0/
mv vendor/plugins/rel_2.0.0 vendor/plugins/engines
</pre>
<p>2. Copie o diretório do plugin para <cite>#{RAILS_ROOT}/vendor/plugins</cite></p>
<p>3. Se o plugin requer migração, rode o seguinte comando para atualizar a sua database (faça um backup primeiro).</p>
<pre>
rake db:migrate_plugins
</pre>
<p>4. Reinicie o Redmine (siga as instruções de acordo com o servidor que você está usando).</p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2009/02/25/dicas-para-otimizar-o-redmine/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Reforma na Wiki do Rails</title>
		<link>http://vebersol.net/2009/01/15/reforma-na-wiki-do-rails/</link>
		<comments>http://vebersol.net/2009/01/15/reforma-na-wiki-do-rails/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 16:55:00 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">tag:vebersol.net,2009-01-15:160</guid>
		<description><![CDATA[
Foi anunciado no blog Riding Rails que a wiki do Rails será reformada (revitalizada).
Para dar início ao projeto, a equipe do Rails está formando um grupo de pessoas dedicadas e interessadas em colaborar nessa “revitalização”. Interessados devem ingressar no grupo Ruby on Rails Wiki e ler esse tópico (acredito que seja esse) wiki software.
Atual wiki [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-76" title="ror_wiki" src="http://vebersol.net/wp-content/uploads/2009/01/ror_wiki.jpg" alt="ror_wiki" width="605" height="550" /></p>
<p>Foi anunciado no blog <a href="http://weblog.rubyonrails.com/2009/1/13/activist-status-wiki-project">Riding Rails</a> que a wiki do Rails será reformada (revitalizada).</p>
<p>Para dar início ao projeto, a equipe do Rails está formando um grupo de pessoas dedicadas e interessadas em colaborar nessa “revitalização”. Interessados devem ingressar no grupo <a href="http://groups.google.com/group/rubyonrails-wiki">Ruby on Rails Wiki</a> e ler esse tópico (acredito que seja esse) <a href="http://groups.google.com/group/rubyonrails-wiki/browse_thread/thread/43f96a8536abd49c">wiki software</a>.</p>
<p><strong>Atual wiki do Rails:</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2009/01/15/reforma-na-wiki-do-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mephisto finalmente &#8220;funcionando&#8221; para mim</title>
		<link>http://vebersol.net/2008/12/29/mephisto-finalmente-funcionando-para-mim/</link>
		<comments>http://vebersol.net/2008/12/29/mephisto-finalmente-funcionando-para-mim/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 16:11:00 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Mephisto]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">tag:vebersol.net,2008-12-29:151</guid>
		<description><![CDATA[Vocês devem ter notado (ou não) que eu não tenho postado muito. Um dos motivos é que eu estou trabalhando em tempo integral na Conrad Caine e em projetos particulares nas horas vagas. O outro, se deve ao fato de que o meu Mephisto não estava funcionando direito e eu não conseguia entender o motivo.
Durante [...]]]></description>
			<content:encoded><![CDATA[<p>Vocês devem ter notado (ou não) que eu não tenho postado muito. Um dos motivos é que eu estou trabalhando em tempo integral na <a href="http://conrad-caine.com">Conrad Caine</a> e em projetos particulares nas horas vagas. O outro, se deve ao fato de que o meu <a href="http://mephistoblog.com">Mephisto</a> não estava funcionando direito e eu não conseguia entender o motivo.</p>
<p>Durante a semana passada fiquei animado com a possibilidade de correções de bugs com a saída da versão 0.8.1 do Mephisto, mas as mudanças para mim foram muito poucas. À excessão de que o meu blog agora roda na versão 2.2 do Rails, nada mudou.</p>
<p>O principal problema era no upload de Assets, que aparentemente funcionava, mas não exibia as thumbs na listagem e não apontava a imagem para o caminho correto. Finalmente explorando a árvore de diretórios descobri o problema na semana passada. Era o suporte multi-sites do Mephisto que estava surgindo, e os assets já estão funcionando nessa lógica, pelo menos o modelo, pois as views ainda continuavam desatualizadas.</p>
<p>Até aí tudo bem, uma mexidinha de código poderia acabar com os meus problemas, mas como eu não pretendo ter 2 blogs, isso não era o ideal.</p>
<p>Hoje pela manhã li no blog do <a href="http://www.akitaonrails.com/2008/12/29/aviso-cache-no-mephisto">Fábio Akita</a> a rápida e indolor solução para todos os meus problemas <em>“blogísticos”</em>. Se você tem este mesmo problema, siga o texto do Akita e bons posts.</p>
<p>De agora em diante, teremos um 2009 cheio de novidades e textos que estão maduros para compartilharmos.</p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2008/12/29/mephisto-finalmente-funcionando-para-mim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novo case brasileiro em Rails</title>
		<link>http://vebersol.net/2008/12/19/novo-case-brasileiro-em-rails/</link>
		<comments>http://vebersol.net/2008/12/19/novo-case-brasileiro-em-rails/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 12:15:00 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">tag:vebersol.net,2008-12-19:135</guid>
		<description><![CDATA[
Acabo de ler no twitter do Everton Carpes a notícia de que o site da Revista Geek está no ar.
A revista da Editora Digerati desde o início do projeto resolveu mudar radicalmente, e na minha humilde opinião, para a melhor. O antigo portal continha milhares de notícias e conteúdos livres dos mais variados assuntos do [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-65" title="geek_20081219" src="http://vebersol.net/wp-content/uploads/2008/12/geek_20081219.png" alt="geek_20081219" width="506" height="324" /></p>
<p>Acabo de ler no <a href="http://twitter.com/everton_carpes">twitter do Everton Carpes</a> a notícia de que o site da <a href="http://geek.com.br">Revista Geek</a> está no ar.</p>
<p>A revista da <a href="http://www.digerati.com.br/">Editora Digerati</a> desde o início do projeto resolveu mudar radicalmente, e na minha humilde opinião, para a melhor. O antigo portal continha milhares de notícias e conteúdos livres dos mais variados assuntos do universo geek e tantos usuários quanto a dimensão de seu conteúdo, o que representa um site de grande expressão. O novo site, é uma mudança de conceitos e tecnologia, adotando Ruby on Rails para o desenvolvimento da aplicação, o que não diminui a sua dimensão, pode até multiplicar-se.</p>
<p>Tive uma pequena oportunidade de participar no projeto e entender que por trás desse simples e funcional conceito do site da revista geek existe uma complexidade muito grande (não confundam complexidade com aplicação mal feita).</p>
<p>Esse é mais um projeto de grandes dimensões para provar que Rails não é somente um framework para pequenas aplicações. Grandes e complexas aplicações podem sim (e no meu conceito, <span class="caps">DEVEM</span>) ser desenvolvidas em Rails.</p>
<p>Para finalizar deixo os meus parabéns a todos os envolvidos no projeto desde o início, principalmente ao Everton por levar este projeto adiante.</p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2008/12/19/novo-case-brasileiro-em-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails com Passenger (em produção) em hospedagem nacional</title>
		<link>http://vebersol.net/2008/08/05/ruby-on-rails-com-passenger-em-producao-em-hospedagem-nacional/</link>
		<comments>http://vebersol.net/2008/08/05/ruby-on-rails-com-passenger-em-producao-em-hospedagem-nacional/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 13:12:00 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">tag:vebersol.net,2008-08-05:121</guid>
		<description><![CDATA[A TeHospedo acaba de anunciar o lançamento do mod_rails em produção. É a primeira empresa de hospedagem brasileira a implementar o Passenger em seus servidores. Visite o Blog da TeHospedo para ler mais.
Se você tem dúvidas quanto a estabilidade do servidor, saiba que meu blog está rodando com Passenger há mais de um mês e [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://tehospedo.com.br/hospedagem/?xind=vebersol.net&amp;mktid=9p">TeHospedo</a> acaba de anunciar o lançamento do mod_rails em produção. É a primeira empresa de hospedagem brasileira a implementar o Passenger em seus servidores. Visite o <a href="http://blog.tehospedo.com.br/novidades/2008-08-04/ruby-on-rails-com-passenger/">Blog da TeHospedo</a> para ler mais.</p>
<p>Se você tem dúvidas quanto a estabilidade do servidor, saiba que meu blog está rodando com Passenger há mais de um mês e não tive problemas na utilização. Recomendo!</p>
<p>Para assinar, <a href="http://tehospedo.com.br/hospedagem/?xind=vebersol.net&amp;mktid=9p">clique aqui</a></p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2008/08/05/ruby-on-rails-com-passenger-em-producao-em-hospedagem-nacional/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando um repositório git com redMine em seu Shared Host</title>
		<link>http://vebersol.net/2008/07/10/utilizando-um-repositorio-git-com-redmine-em-seu-shared-host/</link>
		<comments>http://vebersol.net/2008/07/10/utilizando-um-repositorio-git-com-redmine-em-seu-shared-host/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 02:49:00 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">tag:vebersol.net,2008-07-11:119</guid>
		<description><![CDATA[Se você tem um pequeno projeto e não tem interesse em pagar um VPS para manter seu repositório git rodando com o redMine, configurá-los em sua hospedagem padrão é uma ótima e barata idéia. Eu recém fiz e achei muito simples fazer.
Antes de tudo é necessário que sua hospedagem tenha:

acesso disponível via SSH;
Ruby on Rails [...]]]></description>
			<content:encoded><![CDATA[<p>Se você tem um pequeno projeto e não tem interesse em pagar um <span class="caps">VPS</span> para manter seu repositório git rodando com o <a href="http://redmine.org">redMine</a>, configurá-los em sua hospedagem padrão é uma ótima e barata idéia. Eu recém fiz e achei muito simples fazer.</p>
<p>Antes de tudo é necessário que sua hospedagem tenha:</p>
<ul>
<li>acesso disponível via <span class="caps">SSH</span>;</li>
<li>Ruby on Rails rodando com fcgi ou mod_rails</li>
<li><span class="caps">SVN</span> instalado (opcional)</li>
<li>Git</li>
<li>Gerenciamento de chaves <span class="caps">SSH</span> pelo CPanel</li>
</ul>
<h3>Instalando o redMine</h3>
<p>A instalação do redMine é muito simples. Basta seguir os passos do próprio site do redMine, clicando <a href="http://www.redmine.org/wiki/redmine/RedmineInstall">aqui</a> e após configurar o redmine de acordo com as suas necessidades.</p>
<p>h3, Criando o repositório Git em sua máquina</p>
<p>Se você ainda não tem um repositório local, é necessário criá-lo, vamos aproveitar e criar uma aplicação Rails para já termos o que enviar ao servidor.</p>
<pre> $cd /home/usuario/workspace
 $rails my_git_project
 $cd my_git_project
 $git init
 $git add *
 $git commit -m "My first commit"</pre>
<h3>Movendo o seu repositório para o seu shared host</h3>
<p>Antes de mais nada é preciso ter em mente que só enviar o seu repositório Git por <span class="caps">FTP</span> pode não ter o funcionamento adequado. Para isso, prepare o seu repositório para ser movido.</p>
<pre> $cd ~/workspace
 $git clone - -bare my_git_project my_git_project.git
 $touch my_git_project.git/git-daemon-export-ok</pre>
<p>Pronto, agora seu repositório está pronto para rodar em seu shared host. Agora é necessário enviá-lo para o seu host. Acesse por <span class="caps">SSH</span> ou <span class="caps">FTP</span> o seu shared host e crie um diretório (que eu vou chamar de <em>src</em>) na home de seu shared host, algo como <em>/home/username/</em>. Se você quiser enviar por <span class="caps">SCP</span>, faça o seguinte:</p>
<pre> $scp ~/workspace/src/my_git_project.git username@meudominio.com:/home/username/src</pre>
<p>Pronto! Seu repositório Git já está no seu servidor e pronto para ser utilizado.</p>
<p>A partir de agora o endereço de seu repositório será algo como:</p>
<pre> $ssh://username@meudominio.com/~/src/my_git_project.git</pre>
<h3>Teste o seu repositório</h3>
<pre> $git clone ssh://username@meudominio.com/~/src/my_git_project.git</pre>
<p>Se você fizer isto, será solicitada a senha <span class="caps">SSH</span> do seu host. Digite a senha e terá o seu repositório em poucos segundos.</p>
<h3>Liberando as suas chaves <span class="caps">SSH</span></h3>
<p>Assim como o <a href="http://github.com">Github</a> você pode adicionar chaves <span class="caps">SSH</span> de sua máquina e de outros desenvolvedores que terão acesso irrestrito sem a necessidade de senha.</p>
<p><em>Atenção: Não são todos os shared hosts que têm está opção. Posso afirmar que a <a href="http://tehospedo.com.br/hospedagem/?xind=vebersol.net&amp;mktid=9p">hospedagem que eu utilizo</a> fornece esta opção.</em></p>
<p><strong><span class="caps">MUITO IMPORTANTE</span>: Quem tiver acesso irrestrito ao seu repositorio git também tera acesso irrestrito a todos os arquivos e bancos de dados do seu <em>shared host</em>.</strong></p>
<p><em>Os passos a seguir são referência do meu CPanel.</em></p>
<p><strong>Para inserir as chaves ssh de seu computador e de terceiros, faça o seguinte:</strong></p>
<p>Para ter uma chave <span class="caps">SSH</span> é necessário criá-la, para isso, recomendo que leiam <a href="http://github.com/guides/providing-your-ssh-key">esta página do Github</a>.</p>
<pre> $cd ~/.ssh
 $cat id_rsa.pub</pre>
<p>Copie o resultado sem nenhum espaço em branco do início e faça o seguinte:</p>
<p>Procure o item <strong><span class="caps">SSH</span>/Shell Access</strong> como mostra a imagem abaixo:</p>
<p><img class="aligncenter size-full wp-image-61" title="ssh_icon" src="http://vebersol.net/wp-content/uploads/2008/07/ssh_icon.jpg" alt="ssh_icon" width="512" height="110" /></p>
<p>Após clique no botão <strong>Manage <span class="caps">SSH</span> Keys</strong> e clique em <strong>Import Key</strong>.</p>
<p>Cole a sua chave <span class="caps">SSH</span> como mostra a imagem abaixo (Não preencha os demais campos):</p>
<p><img class="aligncenter size-full wp-image-62" title="import_keys" src="http://vebersol.net/wp-content/uploads/2008/07/import_keys.jpg" alt="import_keys" width="526" height="454" /></p>
<p>Após clicar em import, vá à listagem de chaves públicas (Public Keys) e clique em <strong>Manage Authorization</strong> e após clique no botão authorize.</p>
<p>Pronto! Agora você não precisa mais digitar a senha de seu <em>shared host</em> toda vez que quiser fazer um clone ou enviar seus <em>commits</em> ao repositório.</p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2008/07/10/utilizando-um-repositorio-git-com-redmine-em-seu-shared-host/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bug no FCGI utilizando método POST com :multipart =&gt; true</title>
		<link>http://vebersol.net/2008/07/05/bug-no-fcgi-utilizando-metodo-post-com-multipart-true/</link>
		<comments>http://vebersol.net/2008/07/05/bug-no-fcgi-utilizando-metodo-post-com-multipart-true/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 22:07:00 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">tag:vebersol.net,2008-07-05:113</guid>
		<description><![CDATA[Ontem ao publicar uma demo no ar, penei para descobrir porque eu não conseguia criar um novo produto durante o teste da aplicação. Utilizando o WEBRick eu conseguia criar normalmente. Seria um problema de banco de dados ou da utilização da versão de alguma gem? Além disso, todos os outros formulários de criação funcionavam.
O que [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem ao publicar uma demo no ar, penei para descobrir porque eu não conseguia criar um novo produto durante o teste da aplicação. Utilizando o WEBRick eu conseguia criar normalmente. Seria um problema de banco de dados ou da utilização da versão de alguma gem? Além disso, todos os outros formulários de criação funcionavam.</p>
<h3>O que será então?</h3>
<p>Se trata de um bug no <span class="caps">FCGI</span>. Simplesmente quando o método <strong><em>multipart</em></strong> está definido como <strong><em>true</em></strong>, ao tentar cadastrar um dado novo no banco de dados, ele não consegue direcionar o <span class="caps">POST</span> para a action <em>create</em> do seu controller. A solução é simples e indolor. No seu form de new faça o seguinte:</p>
<pre>
&lt;%= error_messages_for :product %&gt;

&lt;% form_for(:product, :url =&gt; "#{products_path}/", :html =&gt; { :multipart =&gt; true }) do %&gt;

  &lt;%= render :partial =&gt; 'form' %&gt;

  &lt;p&gt;
    &lt;%= submit_tag "Salvar" %&gt;
  &lt;/p&gt;
&lt;% end %&gt;
</pre>
<p>Note que no lugar de @products eu pus :product, :url =&gt; ”#{products_path}/”, isto porque o bug somente ocorre pela falta da barra após o nome do controller. Se a action do form estiver somente <strong>”/products”</strong> ele irá entender que você quer acessar a action index e não o create. Com a barra no final da action tudo vai funcionar perfeitamente.</p>
<p>Qualquer dúvida, comente, talvez hajam soluções melhores.</p>
<p>O crédito para o descobrimento deste bug é para o Everton Carpes.</p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2008/07/05/bug-no-fcgi-utilizando-metodo-post-com-multipart-true/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teste gratuíto do mod_rails na TeHospedo</title>
		<link>http://vebersol.net/2008/07/05/teste-gratuito-do-mod_rails-na-tehospedo/</link>
		<comments>http://vebersol.net/2008/07/05/teste-gratuito-do-mod_rails-na-tehospedo/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 22:05:00 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">tag:vebersol.net,2008-07-05:112</guid>
		<description><![CDATA[Ontem foi anunciado aos assinantes da TeHospedo.com.br que haverá oferecimento de hospedagem gratuita para quem quiser testar Rails utilizando o famoso mod_rails.
A hospedagem gratuita estará rodando durante os meses de julho e agosto para que a oferta do serviço seja da qualidade que a TeHospedo já oferece há tantos anos.
O que você terá para utilizar [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem foi anunciado aos assinantes da <a href="http://tehospedo.com.br/hospedagem/?xind=vebersol.net&amp;mktid=9p">TeHospedo.com.br</a> que haverá oferecimento de <strong>hospedagem gratuita</strong> para quem quiser testar Rails utilizando o famoso mod_rails.</p>
<p>A hospedagem gratuita estará rodando durante os meses de julho e agosto para que a oferta do serviço seja da qualidade que a TeHospedo já oferece há tantos anos.</p>
<p><strong>O que você terá para utilizar a hospedagem da TeHospedo:</strong></p>
<ul>
<li>Acesso <span class="caps">SSH</span></li>
<li>Capistrano 2.4</li>
<li>Git e <span class="caps">SVN</span></li>
<li>Rails 2.1</li>
<li>mod_rails</li>
<li>e muito mais…</li>
</ul>
<p>Maiores detalhes sobre <strong>hospedagem Ruby on Rails com o mod_rails</strong>, clique <a href="http://blog.tehospedo.com.br/novidades/2008-07-04/hospedagem-rails-agora-com-passenger-mod_rails/"><strong>aqui</strong></a>.</p>
<p>Se você não deseja utilizar os servidores da <a href="http://tehospedo.com.br/hospedagem/?xind=vebersol.net&amp;mktid=9p">TeHospedo</a> para testes e já quer rodar sua aplicação em produção, clique aqui e já tenha a sua conta ativada em menos de duas horas úteis.</p>
<p>A <a href="http://tehospedo.com.br/hospedagem/?xind=vebersol.net&amp;mktid=9p">TeHospedo</a> também está oferecendo hospedagem gratuíta para domínios <em>.can.br</em>, confira <a href="http://blog.tehospedo.com.br/novidades/2008-07-04/hospedagem-gratuita-para-dominios-canbr/">aqui</a>.</p>
<p><a href="http://tehospedo.com.br/hospedagem/?xind=vebersol.net&amp;mktid=9p"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2008/07/05/teste-gratuito-do-mod_rails-na-tehospedo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
