<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Sentinel: observers transparentes para seu código Ruby</title>
	<atom:link href="http://www.makemesimple.com/blog/2010/01/07/sentinel-observers-transparentes-para-seu-codigo-ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.makemesimple.com/blog/2010/01/07/sentinel-observers-transparentes-para-seu-codigo-ruby/</link>
	<description>Conhecimento nunca é o bastante</description>
	<lastBuildDate>Mon, 26 Jul 2010 00:13:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Keep Learning &#8211; Sentinel: agora, mais transparente do que nunca</title>
		<link>http://www.makemesimple.com/blog/2010/01/07/sentinel-observers-transparentes-para-seu-codigo-ruby/comment-page-1/#comment-483</link>
		<dc:creator>Keep Learning &#8211; Sentinel: agora, mais transparente do que nunca</dc:creator>
		<pubDate>Tue, 02 Mar 2010 18:17:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.makemesimple.com/blog/?p=341#comment-483</guid>
		<description>[...] Em Janeiro criei a gem Sentinel, que provê a funcionalidade do padrão Observer de forma transparente para código Ruby. Bom, olhando os exemplos de uso da primeira versão, é possível perceber que a biblioteca não é tão transparente assim: apesar de não alterar os métodos observados, a classe subject tem conhecimento do observer, o que não é bom (nos comentários do post linkado acima falo sobre um &#8220;hack&#8221; para contornar isso, mas não é uma solução elegante). [...]</description>
		<content:encoded><![CDATA[<p>[...] Em Janeiro criei a gem Sentinel, que provê a funcionalidade do padrão Observer de forma transparente para código Ruby. Bom, olhando os exemplos de uso da primeira versão, é possível perceber que a biblioteca não é tão transparente assim: apesar de não alterar os métodos observados, a classe subject tem conhecimento do observer, o que não é bom (nos comentários do post linkado acima falo sobre um &#8220;hack&#8221; para contornar isso, mas não é uma solução elegante). [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lucas Húngaro</title>
		<link>http://www.makemesimple.com/blog/2010/01/07/sentinel-observers-transparentes-para-seu-codigo-ruby/comment-page-1/#comment-476</link>
		<dc:creator>Lucas Húngaro</dc:creator>
		<pubDate>Fri, 08 Jan 2010 14:29:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.makemesimple.com/blog/?p=341#comment-476</guid>
		<description>De qualquer modo, se for necessário isolar o subject (classe com comportamento observado) e retirar as referências diretas ao Observer, é fácil tornar isso configurável através de uma constante.

Num arquivo de configuração (no Rails, um initializer, por exemplo):

&lt;pre&gt;
module MyApp
  SEARCH_OBSERVER = MyObserver
end
&lt;/pre&gt;
&lt;br/&gt;

E, na declaração no subject:

&lt;pre&gt;
observe :metodo, :notify =&gt; SEARCH_OBSERVER
&lt;/pre&gt;
&lt;br/&gt;

Também creio que é possível, com pouca alteração no código da gem, mover essa declaração para o Observer, deixando o subject totalmente livre de mudanças.</description>
		<content:encoded><![CDATA[<p>De qualquer modo, se for necessário isolar o subject (classe com comportamento observado) e retirar as referências diretas ao Observer, é fácil tornar isso configurável através de uma constante.</p>
<p>Num arquivo de configuração (no Rails, um initializer, por exemplo):</p>
<pre>
module MyApp
  SEARCH_OBSERVER = MyObserver
end
</pre>
<p></p>
<p>E, na declaração no subject:</p>
<pre>
observe :metodo, :notify => SEARCH_OBSERVER
</pre>
<p></p>
<p>Também creio que é possível, com pouca alteração no código da gem, mover essa declaração para o Observer, deixando o subject totalmente livre de mudanças.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lucas Húngaro</title>
		<link>http://www.makemesimple.com/blog/2010/01/07/sentinel-observers-transparentes-para-seu-codigo-ruby/comment-page-1/#comment-475</link>
		<dc:creator>Lucas Húngaro</dc:creator>
		<pubDate>Fri, 08 Jan 2010 03:02:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.makemesimple.com/blog/?p=341#comment-475</guid>
		<description>Rodrigo, esse seria o máximo da &quot;transparência&quot; mesmo. Se você der uma olhada na implementação que linkei (dada pelo Russ Olsen em seu livro Design Patterns in Ruby), ela modifica não apenas a classe, mas também os métodos observados.

Eu queria algo um pouco menos intrusivo e cheguei a essa implementação. Gosto do estilo declarativo e, como minha necessidade é &quot;observar&quot; uma classe sobre a qual tenho pleno controle, o resultado foi satisfatório.

Obrigado pelos comentários! :)</description>
		<content:encoded><![CDATA[<p>Rodrigo, esse seria o máximo da &#8220;transparência&#8221; mesmo. Se você der uma olhada na implementação que linkei (dada pelo Russ Olsen em seu livro Design Patterns in Ruby), ela modifica não apenas a classe, mas também os métodos observados.</p>
<p>Eu queria algo um pouco menos intrusivo e cheguei a essa implementação. Gosto do estilo declarativo e, como minha necessidade é &#8220;observar&#8221; uma classe sobre a qual tenho pleno controle, o resultado foi satisfatório.</p>
<p>Obrigado pelos comentários! <img src='http://www.makemesimple.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rodrigo Kochenburger</title>
		<link>http://www.makemesimple.com/blog/2010/01/07/sentinel-observers-transparentes-para-seu-codigo-ruby/comment-page-1/#comment-474</link>
		<dc:creator>Rodrigo Kochenburger</dc:creator>
		<pubDate>Fri, 08 Jan 2010 02:37:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.makemesimple.com/blog/?p=341#comment-474</guid>
		<description>Porém eu acho que as declarações deveriam ser feitas no observer pq se tu define o observer na declaração do objeto sendo observado, voce cria uma dependencia do objeto para o observer.

E o objeto observado, por definição, não deveria &quot;saber&quot; do observador ;)</description>
		<content:encoded><![CDATA[<p>Porém eu acho que as declarações deveriam ser feitas no observer pq se tu define o observer na declaração do objeto sendo observado, voce cria uma dependencia do objeto para o observer.</p>
<p>E o objeto observado, por definição, não deveria &#8220;saber&#8221; do observador <img src='http://www.makemesimple.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rodrigo Kochenburger</title>
		<link>http://www.makemesimple.com/blog/2010/01/07/sentinel-observers-transparentes-para-seu-codigo-ruby/comment-page-1/#comment-473</link>
		<dc:creator>Rodrigo Kochenburger</dc:creator>
		<pubDate>Fri, 08 Jan 2010 02:34:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.makemesimple.com/blog/?p=341#comment-473</guid>
		<description>Cool. Ruby é muito flexivel e possibilita fazer muitas coisas que lembram um pouco AOP (Aspect Oriented Programming). Show de bola ;)</description>
		<content:encoded><![CDATA[<p>Cool. Ruby é muito flexivel e possibilita fazer muitas coisas que lembram um pouco AOP (Aspect Oriented Programming). Show de bola <img src='http://www.makemesimple.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.678 seconds -->
