<?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>Rafa Garcia.net - Blog &#187; rails</title>
	<atom:link href="http://blog.rafagarcia.net/category/rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rafagarcia.net</link>
	<description>Desvaríos varios sobre ruby, rails, linux, capistrano, ... y muchas cosas más!</description>
	<lastBuildDate>Sun, 22 Aug 2010 13:35:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Prompt dialog y capybara</title>
		<link>http://blog.rafagarcia.net/2010/06/11/prompt-dialog-y-capybara/</link>
		<comments>http://blog.rafagarcia.net/2010/06/11/prompt-dialog-y-capybara/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 19:52:50 +0000</pubDate>
		<dc:creator>Rafa García</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://blog.rafagarcia.net/?p=138</guid>
		<description><![CDATA[Escribiendo los tests de borrado de items de una aplicación me encontré con una cosa muy molesta al usar el driver de selenium. Al aparecer el diálogo de confirmación de borrado se quedaba esperando que alguien pulsara el botón de aceptar para empezar con el borrado. Casualmente en el stand up meeting matinal de hoy [...]]]></description>
			<content:encoded><![CDATA[<p>Escribiendo los tests de borrado de items de una aplicación me encontré con una cosa muy molesta al usar el driver de selenium. Al aparecer el diálogo de confirmación de borrado se quedaba esperando que alguien pulsara el botón de aceptar para empezar con el borrado.</p>
<p>Casualmente en el stand up meeting matinal de hoy uno de los chicos de Chile(<a href="http://blog.leosoto.com/" target="_blank">Leo</a>) tuvo el mismo problema y las soluciones han sido similares. Aquí os las dejo por si os ocurre lo mismo.</p>
<p>La versión para cucumber:</p>
<script src="http://gist.github.com/434446.js"></script>
<p>Y la solución para RSpec de <a href="http://blog.leosoto.com/" target="_blank">Leo</a>:</p>
<script src="http://gist.github.com/434460.js"></script>
<p><br class="spacer_" /></p>
<p>Si no usas selenium(el tag @javascript en cucumber) y usas la emulación de javascript de capybara(tag  ﻿@emulate_rails_javascript) la pulsación del botón aceptar en el diálogo de confirmación es automágica y no necesitas nada mas.</p>
<p><br class="spacer_" /></p>
<p>Saludos y que os vaya bonito.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rafagarcia.net/2010/06/11/prompt-dialog-y-capybara/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Capistrano 2.5.9 preview release, probála! &#8211; llamada a la comunidad</title>
		<link>http://blog.rafagarcia.net/2009/09/03/capistrano-2-5-9-preview-release-probala-llamada-a-la-comunidad/</link>
		<comments>http://blog.rafagarcia.net/2009/09/03/capistrano-2-5-9-preview-release-probala-llamada-a-la-comunidad/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 23:17:57 +0000</pubDate>
		<dc:creator>Rafa García</dc:creator>
				<category><![CDATA[capistrano]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.rafagarcia.net/?p=59</guid>
		<description><![CDATA[Lee Hambley hace unos días anunció &#8220;Capistrano 2.5.9 preview release&#8221;, la finalidad de esta pre-release era comprobar que la corrección de un bug importante se había solucionado y no provocaba ninguna destrucción Además se añadió alguna pequeña funcionalidad y se corrigieron otros bugs. Esperábamos algo de feedback y la verdad es que no ha llegado [...]]]></description>
			<content:encoded><![CDATA[<p>Lee Hambley hace unos días anunció &#8220;Capistrano 2.5.9 preview release&#8221;, la finalidad de esta pre-release era comprobar que la corrección de un <a href="https://capistrano.lighthouseapp.com/projects/8716/tickets/79-capistrano-hangs-on-shell-command-for-many-computers-on-ruby-186-p368" target="_blank">bug importante se había solucionado</a> y no provocaba ninguna destrucción <img src='http://blog.rafagarcia.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Además se añadió alguna pequeña funcionalidad y se corrigieron otros bugs.</p>
<p>Esperábamos algo de feedback y la verdad es que no ha llegado nada de nada.</p>
<p>Entonces desde aquí hago una llamada a toda la comunidad ror-es para que, por favor, probéis esta release y nos hagáis saber si os ha funcionado todo como debía o si la hemos &#8220;liao parda&#8221;.</p>
<p>Podéis reportar desde <a href="https://capistrano.lighthouseapp.com/dashboard" target="_blank">Lighthouse</a>, mandándome un email(rgo en aspgems punto com) o por twitter a @leptom.</p>
<p><br class="spacer_" /></p>
<p>Para probarla tenéis actualizar net-ssh a la versión 2.0.14 y descargar la gema desde aquí e instalarla:</p>
<p><a href="http://groups.google.com/group/capistrano/web/capistrano-2.5.9.gem" target="_blank">http://groups.google.com/group/capistrano/web/capistrano-2.5.9.gem</a></p>
<p>Para ver los cambios realizados en esta release:</p>
<p><a href="http://capistrano.googlegroups.com/web/2.5.9-Release-Notes.txt.md" target="_blank">http://capistrano.googlegroups.com/web/2.5.9-Release-Notes.txt.md</a></p>
<p><br class="spacer_" /></p>
<p>Gracias a todos!</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rafagarcia.net/2009/09/03/capistrano-2-5-9-preview-release-probala-llamada-a-la-comunidad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buscando en Apidock.com con Ubiquity</title>
		<link>http://blog.rafagarcia.net/2009/08/15/buscando-en-apidock-com-con-ubiquity/</link>
		<comments>http://blog.rafagarcia.net/2009/08/15/buscando-en-apidock-com-con-ubiquity/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 14:38:37 +0000</pubDate>
		<dc:creator>Rafa García</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ubiquity]]></category>

		<guid isPermaLink="false">http://blog.rafagarcia.net/?p=54</guid>
		<description><![CDATA[Hoy me ha dado por trastear Ubiquity. Es plugin-experimento para crear una interfaz entre el navegador y la web usando el lenguaje natural. La verdad es que no se muy bien como explicarlo, así que os recomiendo que veáis el vídeo, lo instaléis y sigáis el tutorial. Y luego está apidock.com, que es un proyecto [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy me ha dado por trastear <a href="http://labs.mozilla.com/projects/ubiquity/" target="_blank">Ubiquity</a>. Es plugin-experimento para crear una interfaz entre el navegador y la web usando el lenguaje natural. La verdad es que no se muy bien como explicarlo, así que os recomiendo que veáis el vídeo, lo instaléis y sigáis el tutorial.</p>
<p>Y luego está <a href="http://apidock.com" target="_blank">apidock.com</a>, que es un proyecto dedicado a mejorar la interfaz de la documentación existente de Ruby, Rails y RSpec.</p>
<p>Juntando estos dos elementos he escrito estos comandos que nos sirven para usar el buscador de <a href="http://apidock.com/" target="_blank">apidock.com</a> desde <a href="http://labs.mozilla.com/projects/ubiquity/" target="_blank">Ubiquity</a>:</p>
<script src="http://gist.github.com/168361.js"></script>
<p>Para usarlo tienes que invocar <a href="http://labs.mozilla.com/projects/ubiquity/" target="_blank">Ubiquity</a> y después poner &#8220;rails &lt;término_a_buscar&gt;&#8221;, podemos sustituir rails por ruby o rspec.</p>
<p><br class="spacer_" /></p>
<p><em>Tips:</em></p>
<ul>
<li>Para acceder a un resultado sin tener que hacer click en el basta con pulsar Ctrl+Alt+[número] .</li>
<li>Accediendo directamente al <a href="http://gist.github.com/168361" target="_blank">gist</a> con <a href="http://labs.mozilla.com/projects/ubiquity/" target="_blank">Ubiquity</a> instalado nos dirá si queremos instalar los comandos automáticamente.</li>
</ul>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rafagarcia.net/2009/08/15/buscando-en-apidock-com-con-ubiquity/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Usemos 503 para nuestras páginas de mantenimiento</title>
		<link>http://blog.rafagarcia.net/2009/07/28/usemos-503-para-nuestras-paginas-de-mantenimiento/</link>
		<comments>http://blog.rafagarcia.net/2009/07/28/usemos-503-para-nuestras-paginas-de-mantenimiento/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 11:24:33 +0000</pubDate>
		<dc:creator>Rafa García</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[capistrano]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.rafagarcia.net/?p=46</guid>
		<description><![CDATA[La mayor parte de la documentación que hay por ahí sobre como configurar Apache para poder usar la tarea de Capistrano deploy:web:disable es usar la directiva RewriteRule para ver si existe la página de mantenimiento. Aparentemente está bien, pero no es así porque no cambia el código de la respuesta. Los clientes recibirán un 200 [...]]]></description>
			<content:encoded><![CDATA[<p>La mayor parte de la documentación que hay por ahí sobre como configurar Apache para poder usar la tarea de Capistrano <em>deploy:web:disable</em> es usar la directiva <em>RewriteRule</em> para ver si existe la página de mantenimiento.</p>
<p>Aparentemente está bien, pero no es así porque no cambia el código de la respuesta. Los clientes recibirán un <em>200 OK</em>, indicando de que el servidor está funcionando como debe. El código de estado correcto debiera ser <em>503 Service Unavailable</em>. Con un 503, conseguiremos prevenir que los motores de búsqueda indexen nuestra página de mantenimiento, a los que usan nuestra API les haremos la vida mas fácil, las peticiones AJAX pueden ser tratadas correctamente cuando el site se ha caído, etc.</p>
<p>La configuración de apache para realizar esto es la siguiente:</p>
<script src="http://gist.github.com/157111.js"></script>
<p><span id="more-46"></span>El flag <em>redirect=503</em> parece un poco raro, aquí os pongo un extracto de la <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#redirect" target="_blank">sección de flags de la documentación de mod_rewrite</a>:</p>
<p style="padding-left: 30px;">While this is typically used for redirects, any valid status code can be given here.     If the status code is outside the redirect range (300-399), then the <em>Substitution</em> string is dropped and rewriting is stopped as if the <code>L</code> flag was used.</p>
<p>En definitiva, que a <em>RewriteRule</em> puedes ponerle como segundo argumento lo que sea y el flag <em>last</em> no es necesario porque se aplica automáticamente. Pongo como path &#8216;-&#8217; y además el flag <em>last</em> a modo informativo de todos modos.</p>
<p><br class="spacer_" /></p>
<p><strong>Nota</strong>: Esto es una traducción (muy) libre del artículo de Chris K. (http://www.shiftcommathree.com/articles/make-your-rails-maintenance-page-respond-with-a-503).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rafagarcia.net/2009/07/28/usemos-503-para-nuestras-paginas-de-mantenimiento/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Validando modelos no Active Record</title>
		<link>http://blog.rafagarcia.net/2009/07/06/validando-modelos-no-active-record/</link>
		<comments>http://blog.rafagarcia.net/2009/07/06/validando-modelos-no-active-record/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 16:29:21 +0000</pubDate>
		<dc:creator>Rafa García</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[activerecord]]></category>
		<category><![CDATA[validar]]></category>

		<guid isPermaLink="false">http://blog.rafagarcia.net/?p=1</guid>
		<description><![CDATA[Siempre que se hace un formulario de contacto tengo la misma necesidad, validarlo. ¿Teniendo las validaciones de AR para qué quiero reinventar la rueda? El otro día encontré una solución en un blog que me pareció interesante pero solo funcionaba con rails 2.2 aparentemente. Digo aparentemente porque el primer comentario me indicaba como apañarlo para [...]]]></description>
			<content:encoded><![CDATA[<p>Siempre que se hace un formulario de contacto tengo la misma necesidad, validarlo. ¿Teniendo las validaciones de AR para qué quiero reinventar la rueda?</p>
<p>El otro día encontré una solución en un <a href="http://www.neeraj.name/blog/articles/810-validating-non-activerecord-models-in-rails-2-2" target="_blank">blog</a> que me pareció interesante pero solo funcionaba con rails 2.2 aparentemente. Digo aparentemente porque el primer comentario me indicaba como apañarlo para rails 2.3.</p>
<p><span id="more-1"></span>El código del módulo es este y debemos guardarlo en un fichero dentro del directorio /lib de nuestra aplicación rails:<br />
 <script src="http://gist.github.com/141471.js"></script></p>
<p><br class="spacer_" /></p>
<p>Suponiendo que nuestro formulario de contacto tiene los campos &#8220;name&#8221;, &#8220;email&#8221;, &#8220;phone&#8221; y &#8220;body&#8221;, entonces nuestro modelo quedará así:<br />
 <script src="http://gist.github.com/141472.js"></script></p>
<p>He puesto en el método initialize la ristra de condiciones para que cuando el formulario no valide mantenga los datos.</p>
<p><br class="spacer_" /></p>
<p>Por último el código de nuestro controlador:<br />
 <script src="http://gist.github.com/141473.js"></script></p>
<p>Lo validamos como si de un modelo AR se tratara y si está bien entonces lo enviamos. En caso de no validar en la vista mostramos los errores como hacemos con cualquier modelo AR.</p>
<p><br class="spacer_" /></p>
<p>Con esto ya tenemos nuestro formulario de contacto validado como rails manda y queda inaugurado el blog.</p>
<p><br class="spacer_" /></p>
<p><strong>Nota</strong>: El autor ha sacado una gema con ese módulo &#8211; <a href="http://github.com/neerajdotname/active_record_no_table/tree/master" target="_blank">http://github.com/neerajdotname/active_record_no_table/tree/master</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rafagarcia.net/2009/07/06/validando-modelos-no-active-record/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
