<?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/"
	>

<channel>
	<title>Isaac Feliu</title>
	<atom:link href="http://www.isaacfeliu.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.isaacfeliu.com</link>
	<description>Blog de Isaac Feliu, Emprendedor</description>
	<pubDate>Wed, 02 Dec 2009 10:06:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Volviendo al trabajo</title>
		<link>http://www.isaacfeliu.com/2009/12/volviendo-al-trabajo/</link>
		<comments>http://www.isaacfeliu.com/2009/12/volviendo-al-trabajo/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 10:06:55 +0000</pubDate>
		<dc:creator>isaac</dc:creator>
		
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.isaacfeliu.com/?p=97</guid>
		<description><![CDATA[Sé que no tengo un blog muy concurrido, y que lo actualizo una vez cada varios meses, pero para los (pocos) lectores que todavia quedan por aqui: Me reincorporo al mercado laboral.
Hace más o menos 2 años que cambié mi trabajo como freelance para dedicar el 200% de mi tiempo a vesne, responsable entre otras [...]]]></description>
			<content:encoded><![CDATA[<p>Sé que no tengo un blog muy concurrido, y que lo actualizo una vez cada varios meses, pero para los (pocos) lectores que todavia quedan por aqui: Me reincorporo al mercado laboral.</p>
<p>Hace más o menos 2 años que cambié mi trabajo como freelance para dedicar el 200% de mi tiempo a vesne, responsable entre otras cosas del desarrollo de www.moterus.es, y toda la tecnologia que hay por debajo.</p>
<p>Así pues, si alguien busca el perfil de un &#8220;hombre-orquestra&#8221;, capaz de freir una corbata o planchar un huevo, responsable, comprometido, serio, y con ya muchos años de experiencia a sus espalda a pesar de ser joven, preferiblemente para desarrollar aplicaciones web en Ruby on Rails&#8230;. puede que sea la persona indicada.</p>
<p>¿Hablamos?</p>
<p><a href="javascript:DeCryptX('jtbbd/gfmjvAhnbjm/dpn')">isaac [dot] feliu [at] gmail [dot] com</a></p>
<p>+34 628 43 65 68</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isaacfeliu.com/2009/12/volviendo-al-trabajo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quiero una GS!</title>
		<link>http://www.isaacfeliu.com/2009/07/quiero-una-gs/</link>
		<comments>http://www.isaacfeliu.com/2009/07/quiero-una-gs/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 14:18:56 +0000</pubDate>
		<dc:creator>isaac</dc:creator>
		
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.isaacfeliu.com/?p=94</guid>
		<description><![CDATA[Pues sí!
Acabo de lanzarme a una aventura loca: www.quierounags.com
Me puedes ayudar de varias formas:
- Haciendo una aportación.
- Escribiendo un post en un blog sobre el proyecto
- Comprando una camiseta y llevandola siempre puesta (bueno va, te permito que la laves de tanto en tanto!)
- Dándome ánimos!
- Explicandolo a todos tus amigos, conocidos y desconocidos.
- Poniendo [...]]]></description>
			<content:encoded><![CDATA[<p>Pues sí!</p>
<p>Acabo de lanzarme a una aventura loca: <a href="http://www.quierounags.com"title="Quiero una GS!"  onclick="javascript:urchinTracker ('/outbound/article/www.quierounags.com');">www.quierounags.com</a></p>
<p>Me puedes ayudar de varias formas:</p>
<p>- Haciendo una aportación.</p>
<p>- Escribiendo un post en un blog sobre el proyecto</p>
<p>- Comprando una camiseta y llevandola siempre puesta (bueno va, te permito que la laves de tanto en tanto!)</p>
<p>- Dándome ánimos!</p>
<p>- Explicandolo a todos tus amigos, conocidos y desconocidos.</p>
<p>- Poniendo una vela en alguna capilla remota!</p>
<p>- Lo que se te ocurra!!!!</p>
<p>Deséame suerte! <img src='http://www.isaacfeliu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Saludos!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isaacfeliu.com/2009/07/quiero-una-gs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Moterus - un año después</title>
		<link>http://www.isaacfeliu.com/2009/03/moterus-un-ano-despues/</link>
		<comments>http://www.isaacfeliu.com/2009/03/moterus-un-ano-despues/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 11:21:17 +0000</pubDate>
		<dc:creator>isaac</dc:creator>
		
		<category><![CDATA[moterus]]></category>

		<guid isPermaLink="false">http://www.isaacfeliu.com/?p=50</guid>
		<description><![CDATA[Moterus cumple hoy un año!
Es difícil resumir en unas frases todo lo vivido desde que empezamos con todo esto, hace ya casi año y medio. (Hace un año que &#8220;salimos&#8221; a internet, pero empezamos a trabajar antes, obviamente!)
Hemos tenido momentos buenos, momentos regulares, y algun momento malo. Pero ya se sabe que lo que se [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.moterus.es" onclick="javascript:urchinTracker ('/outbound/article/www.moterus.es');">Moterus</a> cumple hoy un año!</p>
<p>Es difícil resumir en unas frases todo lo vivido desde que empezamos con todo esto, hace ya casi año y medio. (Hace un año que &#8220;salimos&#8221; a internet, pero empezamos a trabajar antes, obviamente!)</p>
<p>Hemos tenido momentos buenos, momentos regulares, y algun momento malo. Pero ya se sabe que lo que se hace con pasión se hace con agrado, y se superan antes las crisis. Hemos aprendido muchíssimo en este año, hemos cometido errores (y los que nos quedan por cometer), pero seguimos con la misma ilusión que el primer dia.</p>
<p>Para celebrar este primer aniversario hemos preparado un <a href="http://www.moterus.es/concurso" onclick="javascript:urchinTracker ('/outbound/article/www.moterus.es');">concurso</a> junto a la gente de <a href="http://www.motosprint-shop.com" onclick="javascript:urchinTracker ('/outbound/article/www.motosprint-shop.com');">motosprint-shop</a> con unos premios más que interesantes, por lo que si eres <a href="http://www.moterus.es" onclick="javascript:urchinTracker ('/outbound/article/www.moterus.es');">motero</a> y no estás todavia en moterus, ya no tienes excusa para entrar, puedes empezar con suerte! <img src='http://www.isaacfeliu.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Nos vemos en la carretera,</p>
<p>Vsssss!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isaacfeliu.com/2009/03/moterus-un-ano-despues/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nuestro CEO</title>
		<link>http://www.isaacfeliu.com/2009/02/nuestro-ceo/</link>
		<comments>http://www.isaacfeliu.com/2009/02/nuestro-ceo/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 14:22:35 +0000</pubDate>
		<dc:creator>isaac</dc:creator>
		
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.isaacfeliu.com/2009/02/nuestro-ceo/</guid>
		<description><![CDATA[Este es el CEO de vesne. Por su cara se puede interpretar que las cosas van bien. 

]]></description>
			<content:encoded><![CDATA[<p>Este es el CEO de vesne. Por su cara se puede interpretar que las cosas van bien. <img src='http://www.isaacfeliu.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
<p><a href="http://www.isaacfeliu.com/wp-content/uploads/2009/02/p-640-480-ced92831-145a-4a66-be41-a7e4026e0aed.jpeg" ><img src="http://www.isaacfeliu.com/wp-content/uploads/2009/02/p-640-480-ced92831-145a-4a66-be41-a7e4026e0aed.jpeg" alt="" width="225" height="300" class="alignnone size-full wp-image-364" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.isaacfeliu.com/2009/02/nuestro-ceo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Moterus en inglés!</title>
		<link>http://www.isaacfeliu.com/2008/09/moterus-en-ingles/</link>
		<comments>http://www.isaacfeliu.com/2008/09/moterus-en-ingles/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 01:10:59 +0000</pubDate>
		<dc:creator>isaac</dc:creator>
		
		<category><![CDATA[moterus]]></category>

		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.isaacfeliu.com/?p=45</guid>
		<description><![CDATA[Lo bueno se hace esperar, y en este caso, hablamos de moterus, versión inglesa. Me gustaria que le echarais un ojo y me dierais vuestra opinión, así como que se la recomendeis a todos los moteros de habla no-hispana que conozcais!!!
P.D.: Para los más techies de la sala, fijaros en las urls en inglés/castellano (que [...]]]></description>
			<content:encoded><![CDATA[<p>Lo bueno se hace esperar, y en este caso, hablamos de <a href="http://www.moterus.com"title="Moterus - Your biker's social network"  target="_self" onclick="javascript:urchinTracker ('/outbound/article/www.moterus.com');">moterus</a>, versión inglesa. Me gustaria que le echarais un ojo y me dierais vuestra opinión, así como que se la recomendeis a todos los moteros de habla no-hispana que conozcais!!!</p>
<p>P.D.: Para los más techies de la sala, fijaros en las urls en inglés/castellano (que mola mazo, pero no veas lo que cuesta hacerlo en rails&#8230;.)</p>
<p>En otro orden de cosas, la semana pasada mi hija cumplió un año: el tiempo se nos va de las manos, y cuando te quieres dar cuenta ya es tarde y te has hecho mayor (Ya me queda poco para los 30&#8230;.). Da que pensar que cuanto más grande eres, más recuerdas los tiempos pasados (ya se sabe, siempre fueron mejores!)</p>
<p>Ahora vamos a dormir, que ya toca, ha sido una semana intensa&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isaacfeliu.com/2008/09/moterus-en-ingles/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Como preparar fixtures de forma rápida y sencilla</title>
		<link>http://www.isaacfeliu.com/2008/08/como-preparar-fixtures-de-forma-rapida-y-sencilla/</link>
		<comments>http://www.isaacfeliu.com/2008/08/como-preparar-fixtures-de-forma-rapida-y-sencilla/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 09:40:05 +0000</pubDate>
		<dc:creator>isaac</dc:creator>
		
		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[tecnologia]]></category>

		<category><![CDATA[fixtures]]></category>

		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.isaacfeliu.com/?p=41</guid>
		<description><![CDATA[Vamos con un post rapidito. Llevo unos dias haciendo functional tests, y el tema de los fixtures, como mucha gente ya ha dicho, es un asco.
Para ello me he creado una tarea Rake sencilla que puede ayudaros:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  desc &#34;Prepare fixtures&#34;
  task :prepare_fixtures =&#62; :environment do
&#160;
    class FixturePreparer
    [...]]]></description>
			<content:encoded><![CDATA[<p>Vamos con un post rapidito. Llevo unos dias haciendo functional tests, y el tema de los fixtures, como mucha gente ya ha dicho, es un asco.</p>
<p>Para ello me he creado una tarea Rake sencilla que puede ayudaros:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td class="code"><pre class="ruby">  desc <span style="color:#996600;">&quot;Prepare fixtures&quot;</span>
  task <span style="color:#ff3333; font-weight:bold;">:prepare_fixtures</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">class</span> FixturePreparer
      <span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> <span style="color:#0000FF; font-weight:bold;">self</span>
        <span style="color:#9966CC; font-weight:bold;">def</span> generate<span style="color:#006600; font-weight:bold;">&#40;</span>name, collection<span style="color:#006600; font-weight:bold;">&#41;</span>
          f = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;test/fixtures/#{name}.yml&quot;</span>,<span style="color:#996600;">'w+'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
          collection_data = collection.<span style="color:#9900CC;">map</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>x<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">&#40;</span>block_given? ? <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#9966CC; font-weight:bold;">yield</span> x<span style="color:#006600; font-weight:bold;">&#41;</span> : <span style="color:#006600; font-weight:bold;">&#40;</span>x.<span style="color:#9900CC;">respond_to</span>?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:slug</span><span style="color:#006600; font-weight:bold;">&#41;</span> ? x.<span style="color:#9900CC;">slug</span> : x.<span style="color:#9900CC;">id</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> x.<span style="color:#9900CC;">attributes</span> <span style="color:#006600; font-weight:bold;">&#125;</span>.<span style="color:#9900CC;">to_yaml</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
          collection_data.<span style="color:#9900CC;">each</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>item<span style="color:#006600; font-weight:bold;">|</span> f.<span style="color:#CC0066; font-weight:bold;">puts</span> item.<span style="color:#CC0066; font-weight:bold;">sub</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">/</span>.<span style="color:#9900CC;">*</span>\n<span style="color:#006600; font-weight:bold;">/</span>,<span style="color:#996600;">''</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
          f.<span style="color:#9900CC;">close</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Preparing Users&quot;</span>
    FixturePreparer.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'users'</span>, User.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span>,<span style="color:#006666;">2</span>,<span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Preparing Groups&quot;</span>
    FixturePreparer.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'groups'</span>, Group.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span>,<span style="color:#006666;">2</span>,<span style="color:#006666;">3</span>,<span style="color:#006666;">4</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    FixturePreparer.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'groups_users'</span>, GroupsUser.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:all</span>, <span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:group_id</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span>,<span style="color:#006666;">2</span>,<span style="color:#006666;">3</span>,<span style="color:#006666;">4</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Preparing Discussions&quot;</span>
    discussions = Discussion.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:all</span>, <span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:discutable_type</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'Group'</span>, <span style="color:#ff3333; font-weight:bold;">:discutable_id</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span>,<span style="color:#006666;">2</span>,<span style="color:#006666;">3</span>,<span style="color:#006666;">4</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    FixturePreparer.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'discussions'</span>, discussions<span style="color:#006600; font-weight:bold;">&#41;</span>
    FixturePreparer.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'discussions_users'</span>, DiscussionsUser.<span style="color:#9900CC;">all</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:discussion_id</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> discussions.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&amp;</span>:id<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>item<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#996600;">&quot;#{item.user_id}-#{item.discussion_id}&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
    FixturePreparer.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'discussion_categories'</span>, DiscussionCategory.<span style="color:#9900CC;">all</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:discussion_id</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> discussions.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&amp;</span>:id<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>item<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#996600;">&quot;#{item.discussion_id}-#{item.slug}&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
    FixturePreparer.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'discussion_topics'</span>, DiscussionTopic.<span style="color:#9900CC;">all</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:discussion_id</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> discussions.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&amp;</span>:id<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span>
    FixturePreparer.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'discussion_posts'</span>, DiscussionPost.<span style="color:#9900CC;">all</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:discussion_id</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> discussions.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&amp;</span>:id<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Preparing Countries&quot;</span>
    FixturePreparer.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'countries'</span>, Country.<span style="color:#9900CC;">all</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Creo que el código es auto-explicativo, pero hagamos un repaso rápido:<br />
El tema importante es la classe FixturePreparer, al cual se le pasa un nombre y un array de ActiveRecords, opcionalmente se le puede pasar un bloque.</p>
<p>El nombre será el nombre del fichero a guardar, el array de ActiveRecords es la colección de registros que se quieren poner en el fixture, y por último, el bloque. El bloque es opcional y sirve para poner un identificador único a cada registro dentro del fixture, si no le pasamos ningún bloque, el identificador será el slug, y si no tiene slug, pues el id. En caso que le pasemos un bloque, evaluará el bloque para cada registro. Hay que tener en cuenta que el identificador de registro DEBE SER UNICO en cada yml.</p>
<p>De esta forma, puedes generarte un pequeño set de datos minimos a partir de tu db de desarrollo e ir actualizando los fixtures conforme actualizas tu base de datos.</p>
<p>El código es tan pequeño que no he creido necesario crear un repositorio en github para permitir forks, etc&#8230; pero si alguien esta interesado, lo creo!</p>
<p>Suerte con los tests. <img src='http://www.isaacfeliu.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Editado:</strong> <a href="http://www.hashref.com" onclick="javascript:urchinTracker ('/outbound/article/www.hashref.com');">Xavier Noria</a>, siempre en su linea de expresiones regulares varias, nos proporciona un parche para hacer mejor la clase FixturePreparer, gracias!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isaacfeliu.com/2008/08/como-preparar-fixtures-de-forma-rapida-y-sencilla/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby/Rails y sus cositas&#8230;</title>
		<link>http://www.isaacfeliu.com/2008/08/rubyrails-y-sus-cositas/</link>
		<comments>http://www.isaacfeliu.com/2008/08/rubyrails-y-sus-cositas/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 00:32:58 +0000</pubDate>
		<dc:creator>isaac</dc:creator>
		
		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[tecnologia]]></category>

		<category><![CDATA[memory leak]]></category>

		<guid isPermaLink="false">http://www.isaacfeliu.com/?p=33</guid>
		<description><![CDATA[Llevo un buen rato perdiendo el tiempo por culpa de un &#8220;behaviour&#8221; de ruby/rails, pero después de mucho batallar por fin he encontrado lo que estaba pasando, y lo he solucionado.
Escribo esto para ver si san google me indexa el blog y desde aqui puedo ayudar un poco a los pobres desarrolladores web que se [...]]]></description>
			<content:encoded><![CDATA[<p>Llevo un buen rato perdiendo el tiempo por culpa de un &#8220;behaviour&#8221; de ruby/rails, pero después de mucho batallar por fin he encontrado lo que estaba pasando, y lo he solucionado.</p>
<p>Escribo esto para ver si san google me indexa el blog y desde aqui puedo ayudar un poco a los pobres desarrolladores web que se enfrenten al mismo problema que yo&#8230; Memory Leaks!!</p>
<p>Pero esta vez de los gordos, nada de mariconadas como el GetText 1.90 y su Mb por request perdido&#8230;.</p>
<p>El tema tiene relación con activerecord, una asociación has_many :through junto con otra has_and_belongs_to_many y un callback. Vayamos a por el ejemplo práctico:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
</pre></td><td class="code"><pre class="ruby"><span style="color:#9966CC; font-weight:bold;">class</span> User <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActiveRecord::Base</span>
  has_many <span style="color:#ff3333; font-weight:bold;">:groups_users</span>
  has_many <span style="color:#ff3333; font-weight:bold;">:groups</span>, <span style="color:#ff3333; font-weight:bold;">:through</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:groups_users</span>
  has_and_belongs_to_many <span style="color:#ff3333; font-weight:bold;">:discussions</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> Group <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActiveRecord::Base</span>
  has_many <span style="color:#ff3333; font-weight:bold;">:groups_users</span>
  has_many <span style="color:#ff3333; font-weight:bold;">:users</span>, <span style="color:#ff3333; font-weight:bold;">:through</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:groups_users</span>
  has_one <span style="color:#ff3333; font-weight:bold;">:discussion</span>
  before_create <span style="color:#ff3333; font-weight:bold;">:create_discussion</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> GroupsUser <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActiveRecord::Base</span>
  belongs_to <span style="color:#ff3333; font-weight:bold;">:group</span>
  belongs_to <span style="color:#ff3333; font-weight:bold;">:user</span>
  before_create <span style="color:#ff3333; font-weight:bold;">:add_owner_to_discussion</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> add_user_to_discussion
    group.<span style="color:#9900CC;">discussion</span>.<span style="color:#9900CC;">users</span> <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> user
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> Discussion <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActiveRecord::Base</span>
  belongs_to <span style="color:#ff3333; font-weight:bold;">:group</span>
  has_and_belongs_to_many <span style="color:#ff3333; font-weight:bold;">:users</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>El tema está claro, un usuario puede pertenecer a n grupos, cada grupo tiene una discusión, y los usuarios pertenecen a estas discusiones.</p>
<p>Vayamos a la consola, primero creamos 3000 usuarios</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ruby"><span style="color:#006600; font-weight:bold;">&gt;&gt;</span> <span style="color:#006666;">3000</span>.<span style="color:#9900CC;">times</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>x<span style="color:#006600; font-weight:bold;">|</span> User.<span style="color:#9900CC;">create</span> <span style="color:#006600; font-weight:bold;">&#125;</span></pre></td></tr></table></div>

<p>Vale, ahora creemos un grupo</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ruby"><span style="color:#006600; font-weight:bold;">&gt;&gt;</span> g = Group.<span style="color:#9900CC;">create</span></pre></td></tr></table></div>

<p>Y como paso final&#8230;. le asignamos a este grupo todos los usuarios</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ruby"><span style="color:#006600; font-weight:bold;">&gt;&gt;</span> User.<span style="color:#9900CC;">all</span>.<span style="color:#9900CC;">each</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>u<span style="color:#006600; font-weight:bold;">|</span> g.<span style="color:#9900CC;">users</span> <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> u<span style="color:#006600; font-weight:bold;">&#125;</span></pre></td></tr></table></div>

<p>PAM! Si lo has ejecutado de petará la maquina por exceso de memoria, en mi caso, 2 Gb de SWAP ocupadas en mi precioso MacBook Pro.</p>
<p>¿Cuál es el problema?</p>
<p>El memory leak está en el callback definido en GroupsUser. Al parecer en una asociación has_and_belongs_to_many, el método &lt;&lt; devuelve el proxy (en nuestro caso users) y este proxy se queda en el limbo de ruby al finalizar la llamada al callback, provocando que para cada llamada al callback el proceso pierda bastante memoria (calculo que entre 500 kb y 1 Mb). ¿Cómo solucionarlo? Fácil, asigna una variable y despues nullificala para borrar de la memoria el proxy, en nuestro ejemplo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="ruby">  <span style="color:#9966CC; font-weight:bold;">def</span> add_user_to_discussion
    x = group.<span style="color:#9900CC;">discussion</span>.<span style="color:#9900CC;">users</span> <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> user
    x = <span style="color:#0000FF; font-weight:bold;">nil</span>
  <span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>That&#8217;s it, problema resuelto. Increible pero cierto. Atentos a vuestro código. <img src='http://www.isaacfeliu.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.isaacfeliu.com/2008/08/rubyrails-y-sus-cositas/feed/</wfw:commentRss>
		</item>
		<item>
		<title>De ruta por mi tierra</title>
		<link>http://www.isaacfeliu.com/2008/08/de-ruta-por-mi-tierra/</link>
		<comments>http://www.isaacfeliu.com/2008/08/de-ruta-por-mi-tierra/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 18:50:31 +0000</pubDate>
		<dc:creator>isaac</dc:creator>
		
		<category><![CDATA[moterus]]></category>

		<category><![CDATA[personal]]></category>

		<category><![CDATA[paisajes]]></category>

		<category><![CDATA[rutas]]></category>

		<guid isPermaLink="false">http://www.isaacfeliu.com/?p=30</guid>
		<description><![CDATA[Pues esta tarde, mientras mi mujer y mi hija dormian una siesta me he ido a dar una vuelta en moto, que con tanto trabajo la tengo un poco olvidada la pobre.
He redescubierto los paisajes fantásticos que me ofrece &#8220;mi tierra&#8221;, que poco o nada tiene que envidiar a los pirineos. Estamos en el centro [...]]]></description>
			<content:encoded><![CDATA[<p>Pues esta tarde, mientras mi mujer y mi hija dormian una siesta me he ido a dar una vuelta en moto, que con tanto trabajo la tengo un poco olvidada la pobre.</p>
<p>He redescubierto los paisajes fantásticos que me ofrece &#8220;mi tierra&#8221;, que poco o nada tiene que envidiar a los pirineos. Estamos en el centro de Cataluña, posiblemente en una de las zonas con menos habitantes por metro cuadrado (Tal vez descontando algunas comarcas pirenaicas), y somos poco conocidos. Pero si te paras a mirar en detenimiento los pueblecitos que nos rodean, te llevarás una sorpresa!</p>
<p><a href="http://www.moterus.es/rutas/un-tomb-per-la-segarra-sud"title="Ruta motera - Un tomb per la segarra sud"  onclick="javascript:urchinTracker ('/outbound/article/www.moterus.es');">La ruta</a> ya está colgada, cómo no, en la mejor comunidad de moteros de España (Y pronto del extranjero!).</p>
<div id="attachment_31" class="wp-caption alignnone" style="width: 460px"><a title="Ruta motera - Un tomb per la segarra sud" href="http://www.moterus.es/rutas/un-tomb-per-la-segarra-sud"><img class="size-full wp-image-31" title="Paisaje" src="http://www.isaacfeliu.com/wp-content/uploads/2008/08/img_2858.jpg" alt="Paisaje de la Segarra" width="450" height="300" /><br />
</a><p class="wp-caption-text">Paisaje de la Segarra</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.isaacfeliu.com/2008/08/de-ruta-por-mi-tierra/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WordPress 2.6</title>
		<link>http://www.isaacfeliu.com/2008/08/wordpress-26/</link>
		<comments>http://www.isaacfeliu.com/2008/08/wordpress-26/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 21:57:30 +0000</pubDate>
		<dc:creator>isaac</dc:creator>
		
		<category><![CDATA[tecnologia]]></category>

		<category><![CDATA[wp]]></category>

		<guid isPermaLink="false">http://www.isaacfeliu.com/2008/08/wordpress-26/</guid>
		<description><![CDATA[Probando el nuevo WordPress 2.6 desde el iPhone! 

]]></description>
			<content:encoded><![CDATA[<p>Probando el nuevo WordPress 2.6 desde el iPhone! <img src='http://www.isaacfeliu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
<p><a href="http://www.isaacfeliu.com/wp-content/uploads/2008/08/l-640-427-7d6e17c0-aa6f-4ba0-97f9-5c42b6b10dbf.jpeg" ><img src="http://www.isaacfeliu.com/wp-content/uploads/2008/08/l-640-427-7d6e17c0-aa6f-4ba0-97f9-5c42b6b10dbf.jpeg" alt="" width="300" height="200" class="alignnone size-full wp-image-364" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.isaacfeliu.com/2008/08/wordpress-26/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flickr Pro</title>
		<link>http://www.isaacfeliu.com/2008/08/flickr-pro/</link>
		<comments>http://www.isaacfeliu.com/2008/08/flickr-pro/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 21:19:17 +0000</pubDate>
		<dc:creator>isaac</dc:creator>
		
		<category><![CDATA[Fotografia]]></category>

		<category><![CDATA[personal]]></category>

		<category><![CDATA[Flickr]]></category>

		<guid isPermaLink="false">http://www.isaacfeliu.com/2008/08/13/flickr-pro/</guid>
		<description><![CDATA[
Desde el pasado domingo ya tengo mi cuenta de Flickr Pro.
Hace casi un año que me di de alta en Flickr, básicamente para mostrar fotos de mi hija a mis familiares de forma senzilla. Poco a poco le vas pillando el gustillo a las fotografias y quieres mostrar tu faceta más artística, por lo que al final [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.isaacfeliu.com/wp-content/uploads/2008/08/img_2162.JPG" alt="img_2162.JPG" /></p>
<p>Desde el pasado domingo ya tengo <a href="http://www.flickr.com/photos/isaac_feliu/"title="Mi Flickr"  onclick="javascript:urchinTracker ('/outbound/article/www.flickr.com');">mi cuenta de Flickr Pro</a>.</p>
<p>Hace casi un año que me di de alta en <a href="http://www.flickr.com"title="Flickr"  onclick="javascript:urchinTracker ('/outbound/article/www.flickr.com');">Flickr</a>, básicamente para mostrar fotos de mi hija a mis familiares de forma senzilla. Poco a poco le vas pillando el gustillo a las fotografias y quieres mostrar tu faceta más artística, por lo que al final la cuenta gratuita de Flickr se te queda corta.</p>
<p>¿Solución?</p>
<p>Pillar la versión Pro de pago, que por US$ 25 al año te dan espacio ilimitado y algún extra más (como las estadísticas).</p>
<p>Al final entre <a href="http://www.vesne.com"title="VeSNe"  onclick="javascript:urchinTracker ('/outbound/article/www.vesne.com');">el trabajo</a>, la familia, las <a href="http://www.moterus.es"title="Moterus - Tu comunidad de moteros"  onclick="javascript:urchinTracker ('/outbound/article/www.moterus.es');">motos</a> y las <a href="http://www.flickr.com/photos/isaac_feliu/"title="Flickr"  onclick="javascript:urchinTracker ('/outbound/article/www.flickr.com');">fotos</a> no me queda tiempo para bloguear, a ver si me pongo las pilas y le doy algo más de caña al asunto. Hay tantas cosas por contar!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isaacfeliu.com/2008/08/flickr-pro/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
