<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Esfera Microatômica &#187; Rails</title>
	<atom:link href="http://diogenesf.wordpress.com/tag/rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://diogenesf.wordpress.com</link>
	<description></description>
	<lastBuildDate>Tue, 02 Jun 2009 03:33:48 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='diogenesf.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/84e3202ae65e0f89a4f2ea7ddead8a9d?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Esfera Microatômica &#187; Rails</title>
		<link>http://diogenesf.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://diogenesf.wordpress.com/osd.xml" title="Esfera Microatômica" />
		<item>
		<title>Domain-Driven Design e Rails: Temendo um futuro próximo</title>
		<link>http://diogenesf.wordpress.com/2008/04/01/domain-driven-design-e-rails-temendo-um-futuro-proximo/</link>
		<comments>http://diogenesf.wordpress.com/2008/04/01/domain-driven-design-e-rails-temendo-um-futuro-proximo/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 20:57:15 +0000</pubDate>
		<dc:creator>diogenesf</dc:creator>
				<category><![CDATA[Opiniao]]></category>
		<category><![CDATA[Programacao]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Domain-Driven Design]]></category>

		<guid isPermaLink="false">http://diogenesf.wordpress.com/?p=20</guid>
		<description><![CDATA[Definitivamente, escrever software é uma arte!
E a preocupação com a qualidade dessa arte que criamos deveria ser uma constante em nós desenvolvedores!

 Deveria&#8230;.
Ao reler um antigo post do &#8220;Shoes&#8221;, baseado numa (ainda mais antiga) entrevista com Eric Evans na InfoQ, não pude deixar de lembrar de um post do Ronaldo de uns tempos atrás, no [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=diogenesf.wordpress.com&blog=178536&post=20&subd=diogenesf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">Definitivamente, escrever software é uma arte!<br />
E a preocupação com a qualidade dessa <i>arte</i> que criamos deveria ser uma constante em nós desenvolvedores!
</p>
<p align="justify"> Deveria&#8230;.</p>
<p>Ao reler <a href="http://blog.fragmental.com.br/2007/01/04/eric-evans-no-infoq/" title="Fragmental - Eric Evans no InfoQ">um antigo post do &#8220;Shoes&#8221;</a>, baseado numa (ainda mais antiga) <a href="http://www.infoq.com/articles/eric-evans-ddd-matters-today" title="InfoQ - Entrevista com Eric Evans">entrevista com Eric Evans na InfoQ</a>, não pude deixar de lembrar de <a href="http://logbr.reflectivesurface.com/2008/01/16/o-efeito-asp/" title="Superf�cie Reflexiva - O Efeito ASP">um post do Ronaldo</a> de uns tempos atrás, no qual ele mencionava sua preocupação com relação a qualidade dos códigos atualmente _<i>escritos</i>_ no melhor estilo <i>Rails Way</i>.</p>
<div align="justify"></div>
<p align="justify">Embora o Ronaldo tenha destacado o aspecto da mistura de lógica com a apresentação, comecei a refletir sobre a quantidade de má-representações de domínios de negócio que devem estar espalhadas por aí em aplicações Rails da atualidade. E confesso que isso também me preocupa!</p>
<div align="justify"></div>
<p align="justify">Faz algum tempo que acompanho a lista Rails-BR, mesmo sem postar quase nada por lá. (Inclusive, lá não é o único lugar que tenho deixado de postar alguma coisa. Mas, sabe como é.. A vida de casado é um pouco mais atarefada que muitos imaginam! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</p>
<p align="justify">Na grande maioria dos posts que vejo na lista Rails-BR, e na comunidade Rails brasileira como um todo, não vejo muita preocupação com o design da aplicação e uma boa representação dos domínios de negócio. (Será uma característica da adoção em massa de um <i>hyppe</i>?) Ao contrário, nos deparamos muito com a polida beleza de um domínio &#8220;<a href="http://martinfowler.com/bliki/AnemicDomainModel.html" title="Martin Fowler - Anemic Domain Model">doentio</a>&#8220;, pobre em representação, com uma <i>raison d&#8217;être</i> resumida a mais uma triste estrutura de dados.</p>
<p align="justify">Diferentemente do que alguns pensam, uma boa representação de um domínio real de negócios não pode ser automatizada!</p>
<p align="justify">Espero que os desenvolvedores se atentem mais para isso, e que <a href="http://en.wikipedia.org/wiki/Single_responsibility_principle">não nos deparemos com <i>super-controllers</i></a> e <i>models</i> anêmicos saltando de nossas telas diretamente para o nosso colo.</p>
<p align="justify">Do contrário, se essa tendência se mantiver, ainda veremos muitos códigos &#8220;macarrônicos&#8221;, ASP-like, escritos em Ruby com Rails. O que é uma grande infelicidade dado o poder da linguagem!</p>
<p align="justify">Espero que eu esteja errado nessa minha semi(pre)visão de <a href="http://pt.wikipedia.org/wiki/Dante_Alighieri" title="Dante Alighieri">Dante</a> no domínio <i>Rails</i>. E que, ao contrário dessa possível tendência, possamos ter códigos compreensíveis, projetos com um domínio de negócio bem representado, e filhos plenamente felizes.</p>
<p align="justify">&nbsp;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/diogenesf.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/diogenesf.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/diogenesf.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/diogenesf.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/diogenesf.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/diogenesf.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/diogenesf.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/diogenesf.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/diogenesf.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/diogenesf.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/diogenesf.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/diogenesf.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=diogenesf.wordpress.com&blog=178536&post=20&subd=diogenesf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://diogenesf.wordpress.com/2008/04/01/domain-driven-design-e-rails-temendo-um-futuro-proximo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cd338fedd59e7d02e9479229679354f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">diogenesf</media:title>
		</media:content>
	</item>
		<item>
		<title>acts_as_state_machine: Gerenciando estados de um Model Rails</title>
		<link>http://diogenesf.wordpress.com/2007/12/11/acts_as_state_machine-gerenciando-estados-de-um-model-rails/</link>
		<comments>http://diogenesf.wordpress.com/2007/12/11/acts_as_state_machine-gerenciando-estados-de-um-model-rails/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 21:06:51 +0000</pubDate>
		<dc:creator>diogenesf</dc:creator>
				<category><![CDATA[Belo Horizonte]]></category>
		<category><![CDATA[Io]]></category>
		<category><![CDATA[Opiniao]]></category>
		<category><![CDATA[Programacao]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://diogenesf.wordpress.com/2007/12/11/acts_as_state_machine-gerenciando-estados-de-um-model-rails/</guid>
		<description><![CDATA[Acts as State Machine eh um plugin do Rails que visa facilitar o gerenciamento de estados de um dado model ActiveRecord, implementando assim uma Maquina de Estado Finito.  O acts_as_state_machine carrega o conceito de eventos. Que sao blocos de codigo responsaveis pelas transicoes de um estado do Model para o outro.  Suponhamos, por [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=diogenesf.wordpress.com&blog=178536&post=13&subd=diogenesf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk/README">Acts as State Machine</a> eh um plugin do Rails que visa facilitar o gerenciamento de estados de um dado model ActiveRecord, implementando assim uma <a href="http://pt.wikipedia.org/wiki/M%C3%A1quina_de_estado_finito">Maquina de Estado Finito</a>.  O <em>acts_as_state_machine</em> carrega o conceito de eventos. Que sao blocos de codigo responsaveis pelas transicoes de um estado do Model para o outro.  Suponhamos, por exemplo, que voce queira controlar os estados das tarefas que voce irah realizar durante um dia. Com o <em>acts_as_state_machine</em> voce poderia ter algo parecido com o seguinte:</p>
<pre class="brush: ruby;">
class Tarefa &lt; ActiveRecord::Base
  # Inicialmente a Tarefa estarah no estado 'Pendente'
  acts_as_state_machine :initial =&gt; :pendente

  state :pendente
  state :iniciada, :enter =&gt; Proc.new {|o| Mailer.send_notice(o)}
  state :concluida
  state :cancelada

  # No evento 'iniciar' eh realizada a transicao do estado 'pendente' para 'iniciada'
  event :iniciar do
    transitions :from =&gt; :pendente, :to =&gt; :iniciada
  end

  event :concluir do
    transitions :from =&gt; :iniciada, :to =&gt; :concluida
  end

  event :cancelar do
    transitions :from =&gt; :pendente, :to =&gt; :cancelada
  end
end
</pre>
<p>Para cada estado, um metodo &#8220;&lt;nomedoestado&gt;?&#8221; serah  criado, e para cada evento, um metodo &#8220;&lt;nomedoevento&gt;!&#8221; serah criado:</p>
<pre class="brush: ruby;">
  t = Tarefa.create # Cria a tarefa com seu estado inicial...
  t.state # =&gt; &quot;pendente&quot;
  t.iniciar! # Envia notificacao por email, e muda estado da Tarefa para &quot;iniciada&quot;
  t.iniciada? # =&gt; true
  # ...
  t.concluir! # Muda o estado da tarefa para &quot;Concluida&quot;
</pre>
<p>Como voce pode ver no codigo de exemplo, quando a nossa <em>Tarefa</em> mudar para o estado &#8216;iniciada&#8217;, (em consequencia da chamada ao metodo do evento &#8216;iniciar&#8217;), serah enviada uma notificacao por email. Isso eh feito por meio daquela <em>Proc</em> que foi passada como uma funcao de callback do estado <em>:iniciada</em>. Nos mostrando que temos a flexibilidade de fazer qualquer coisa na mudanca de um estado para o outro. Alih, no lugar de um bloco de codigo, pode ser passado um simbolo, com o nome de um metodo de instancia do model.</p>
<h3>Instalacao</h3>
<p>Para quem jah instalou um plugin Rails, instalar o <em>acts_as_state_machine</em> nao tem segredo algum! Na raiz da tua aplicacao Rails, digite:</p>
<pre class="brush: ruby;">
  ./script/plugin install http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk/
</pre>
<p>Daih em diante eh soh usar! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/diogenesf.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/diogenesf.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/diogenesf.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/diogenesf.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/diogenesf.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/diogenesf.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/diogenesf.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/diogenesf.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/diogenesf.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/diogenesf.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/diogenesf.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/diogenesf.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=diogenesf.wordpress.com&blog=178536&post=13&subd=diogenesf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://diogenesf.wordpress.com/2007/12/11/acts_as_state_machine-gerenciando-estados-de-um-model-rails/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cd338fedd59e7d02e9479229679354f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">diogenesf</media:title>
		</media:content>
	</item>
		<item>
		<title>Minas on Rails &#8216;07: So&#8217; mais um Post Mortem</title>
		<link>http://diogenesf.wordpress.com/2007/12/04/minas-on-rails-07-so-mais-um-post-mortem/</link>
		<comments>http://diogenesf.wordpress.com/2007/12/04/minas-on-rails-07-so-mais-um-post-mortem/#comments</comments>
		<pubDate>Tue, 04 Dec 2007 16:49:00 +0000</pubDate>
		<dc:creator>diogenesf</dc:creator>
				<category><![CDATA[Belo Horizonte]]></category>
		<category><![CDATA[Comunidades]]></category>
		<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[Programacao]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Eu]]></category>
		<category><![CDATA[Minas on Rails]]></category>

		<guid isPermaLink="false">http://diogenesf.wordpress.com/2007/12/04/minas-on-rails-07-so-mais-um-post-mortem/</guid>
		<description><![CDATA[O nosso primeiro Minas on Rails passou, mas muitas coisas boas ficaram!
Primeiro a lembranca do que rolou por aquelas bandas&#8230;Segundo aquele gostinho de &#8220;Quero mais!&#8221;&#8230;
Outra coisa boa que ficou foi a vontade insana de contribuir mais e aumentar minha participacao na comunidade&#8230;Espero que essa vontade continue e que esse blog ajude a satisfaze-la!
   [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=diogenesf.wordpress.com&blog=178536&post=8&subd=diogenesf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>O nosso primeiro <a title="Minas on Rails '07" href="http://www.minasonrails.org">Minas on Rails</a> passou, mas muitas coisas boas ficaram!<br />
Primeiro a lembranca do que rolou por aquelas bandas&#8230;Segundo aquele gostinho de &#8220;Quero mais!&#8221;&#8230;<br />
Outra coisa boa que ficou foi a vontade insana de contribuir mais e aumentar minha participacao na comunidade&#8230;Espero que essa vontade continue e que esse blog ajude a satisfaze-la!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/diogenesf.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/diogenesf.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/diogenesf.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/diogenesf.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/diogenesf.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/diogenesf.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/diogenesf.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/diogenesf.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/diogenesf.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/diogenesf.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/diogenesf.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/diogenesf.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=diogenesf.wordpress.com&blog=178536&post=8&subd=diogenesf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://diogenesf.wordpress.com/2007/12/04/minas-on-rails-07-so-mais-um-post-mortem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cd338fedd59e7d02e9479229679354f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">diogenesf</media:title>
		</media:content>
	</item>
	</channel>
</rss>