<?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>def Tenako.blog () end &#187; starling</title>
	<atom:link href="http://blog.tenako.com/tag/starling/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tenako.com</link>
	<description></description>
	<lastBuildDate>Sun, 10 Jul 2011 10:15:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Ruby: Expirar los mensajes de Starling en 3 comodos pasos</title>
		<link>http://blog.tenako.com/2009/03/20/expirar-mensajes-starling/</link>
		<comments>http://blog.tenako.com/2009/03/20/expirar-mensajes-starling/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 17:12:12 +0000</pubDate>
		<dc:creator>farruco</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[expiry]]></category>
		<category><![CDATA[starling]]></category>

		<guid isPermaLink="false">http://blog.tenako.com/?p=113</guid>
		<description><![CDATA[Si te pasa como a mi, que quieres almacenar mensajes en el starling pero que algunos de ellos lleven &#8220;fecha de caducidad&#8220;, sigue los siguiente pasos. Paso 1 : Abrir en un editor el fichero handler.rb perteneciente a la gema starling-starling. Paso 2 : En el método Handler#set_data añadir la siguiente linea justo antes de [...]]]></description>
			<content:encoded><![CDATA[<p>Si te pasa como a mi, que quieres almacenar mensajes en el starling pero que algunos de ellos lleven &#8220;<a href="http://www.deveiate.org/code/Ruby-MemCache/classes/MemCache.html#M000009" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.deveiate.org');">fecha de caducidad</a>&#8220;, sigue los siguiente pasos.</p>
<ul>
<li><strong>Paso 1 :</strong> Abrir en un editor el fichero handler.rb perteneciente a la gema <a href="http://github.com/starling/starling/tree/master" onclick="javascript:pageTracker._trackPageview('/outbound/article/github.com');">starling-starling</a>.</li>
<li><strong>Paso 2 :</strong> En el método <em>Handler#set_data</em> añadir la siguiente linea justo antes de hacer el pack para generar la variable <em>internal_data</em>.</li>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">  ...
  <span style="color:#9900CC;">expiry</span> = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>.<span style="color:#9900CC;">to_i</span> <span style="color:#006600; font-weight:bold;">+</span> expiry.<span style="color:#9900CC;">to_i</span> <span style="color:#9966CC; font-weight:bold;">unless</span> expiry.<span style="color:#9900CC;">to_i</span> == <span style="color:#006666;">0</span>
  ...</pre></div></div>

<li><strong>Paso 3 :</strong> Guarda y re-arranca el starling.Todo debería de ir como la seda.</li>
</ul>
<p>Con esto, lo único que hemos hecho es corregir un pequeño bug que hay en <em>Handler#get</em> ya que en este método solo se devuelve un mensaje si su expiry es 0 o si expiry es mayor que now (now en este contexto es Time.now.to_i ). El fallo viene de comparar a now (valor <a href="http://en.wikipedia.org/wiki/Unix_time" onclick="javascript:pageTracker._trackPageview('/outbound/article/en.wikipedia.org');">unix time</a>) con expiry el cual es solo un offset desde el momento en el que decidimos guardar un mensaje en starling.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">  ...
  <span style="color:#9966CC; font-weight:bold;">break</span> <span style="color:#9966CC; font-weight:bold;">if</span> expiry == <span style="color:#006666;">0</span> <span style="color:#006600; font-weight:bold;">||</span> expiry <span style="color:#006600; font-weight:bold;">&gt;</span>= now
&nbsp;
  <span style="color:#0066ff; font-weight:bold;">@expiry_stats</span><span style="color:#006600; font-weight:bold;">&#91;</span>key<span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">+</span>= <span style="color:#006666;">1</span>
  expiry, data = <span style="color:#0000FF; font-weight:bold;">nil</span>
  ...</pre></div></div>

<p>Con la linea que añadimos al método <em>Handler#set_data</em> forzamos que la comparación sea entre dos valores unix time.Uno refiriéndose al momento actual (now) y otro al momento en el que expirara el mensaje (la suma de Time.now.to_i en el momento del almacenarlo y el tiempo de vida del mensaje).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tenako.com/2009/03/20/expirar-mensajes-starling/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

