<?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>Bicosyes - since evermore... &#187; rails</title>
	<atom:link href="http://bicosyes.com/tag/rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://bicosyes.com</link>
	<description></description>
	<lastBuildDate>Sat, 06 Mar 2010 20:03:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Generando javascript con código ruby embebido en rails 2.x</title>
		<link>http://bicosyes.com/generando-javascript-con-codigo-ruby-embebido-en-rails-2x/</link>
		<comments>http://bicosyes.com/generando-javascript-con-codigo-ruby-embebido-en-rails-2x/#comments</comments>
		<pubDate>Sat, 03 May 2008 14:05:40 +0000</pubDate>
		<dc:creator>blaxter</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[erb]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://bicosyes.com/generando-javascript-con-codigo-ruby-embebido-en-rails-2x/</guid>
		<description><![CDATA[Hay veces que es bastante útil y cómodo devolver en una petición código javascript para que sea ejecutado en el cliente (y actualice el interfaz del usuario o lo que tenga que hacer). En vez de realizar (1) Petición, (2) &#8230; <a href="http://bicosyes.com/generando-javascript-con-codigo-ruby-embebido-en-rails-2x/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hay veces que es bastante útil y cómodo <strong>devolver</strong> en una petición <strong>código</strong> javascript para que sea ejecutado en el cliente (y actualice el interfaz del usuario o lo que tenga que hacer). En vez de realizar <em>(1)</em> Petición, <em>(2)</em> Generar datos, <em>(3)</em> recepción y procesamiento, <em>(4)</em> actualizar página; pasamos a <em>(1)</em> Petición, <em>(2)</em> generar código, <em>(3)</em> actualizar página. Es decir nos ahorramos el parseo, además nos ahorramos tener que cargar javascript (que procesa las respuestas) en el cliente y usando <a href="http://jquery.com/">jquery</a>/<a href="http://mootools.net/">mootools</a>/* se realiza todo el proceso de forma transparente (indicando en la petición ajax que esperamos recibir un <em>script</em>). Esta técnica será válida <strong>solo</strong> para pequeñas actualizaciones (que son mayoría) y principalmente para temas de interfaz (que suelen ser triviales), pues en definitiva el código que no se ve, es código difícil de mantener.</p>
<p>En <strong>Rails</strong> tenemos <a href="http://www.codyfauser.com/2005/11/20/rails-rjs-templates"><em>templates</em> <strong>RJS</strong></a> que básicamente consiste en lo que acabo de comentar pero generando javascript con <em>wrappers</em> en vez de usar <em>js</em> sin más, algo que me parece absurdo, pero eso es otro tema. Para rails 1.2.x teníamos <a href="http://svn.danwebb.net/external/rails/plugins/minus_mor/trunk/README">este maravilloso plugin</a> de Dan Webb que te permite escribir javascript con ruby embebido en él, algo como:</p>
<pre class="ruby">&lt;% <span style="color:#0066ff; font-weight:bold;">@ids_to_modified</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> |id| %&gt;
   $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'#'</span> + &lt;%= id %&gt;<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">removeClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'&lt;%= @class_to_remove %&gt;'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">highlightFade</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;
&lt;% <span style="color:#9966CC; font-weight:bold;">end</span> %&gt;</pre>
<p>Desde Rails <strong>2.x</strong> ya no es necesario el uso del plugin (en parte porque ya no va), pues podemos hacer esto mismo gracias al nuevo formato de las vistas. </p>
<p>Ahora todas las vistas tienen el formato <em>nombre.<strong>formato</strong>.<strong>template_engine</strong></em>, por ejemplo lo típico sería algo como: <em>nombre.html.erb</em>. Pero, ¿por qué no tener plantillas como <em>nombre.<strong>js</strong>.erb</em>?. De esta forma tendremos, sin incorporar plugins ni nada, la funcionalidad antes comentada, generar javascript permitiendo ruby embebido (es decir, usando <a href="http://ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html">erb</a>).</p>
<p>Para hacernos la vida algo más simple, vendría bien incorporar ciertas funciones y helpers. En tu <em>application.rb</em>, no estaría de más tener algo como:</p>
<pre class="ruby"><span style="color:#9966CC; font-weight:bold;">def</span> respond_with_js
    respond_to<span style="color:#006600; font-weight:bold;">&#123;</span>|format| <span style="color:#CC0066; font-weight:bold;">format</span>.<span style="color:#9900CC;">js</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre>
<p>Por lo que nuestras acciones que vayan a ser llamadas mediante <em>xhr</em> tendrán una pinta tal que:</p>
<pre class="ruby"><span style="color:#9966CC; font-weight:bold;">def</span> vote
   <span style="color:#008000; font-style:italic;"># hacer lo que sea...</span>
   respond_with_js
<span style="color:#9966CC; font-weight:bold;">end</span></pre>
<p>Tenemos que tener en cuenta también, que el javascript generado debe de ser <strong>válido</strong> (por ejemplo escapar comillas en las cadenas, o similares). Para asegurarnos que algo es javascript válido, nada mejor que usar <em>json</em> por lo que podemos pillar prestado del plugin de <a href="http://svn.danwebb.net/external/rails/plugins/minus_mor/trunk/">MinusMOR</a> su helper (y añadirlo a <em>application_helper.rb</em>)</p>
<pre class="ruby"><span style="color:#9966CC; font-weight:bold;">def</span> js<span style="color:#006600; font-weight:bold;">&#40;</span>data<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">if</span> data.<span style="color:#9900CC;">respond_to</span>? <span style="color:#ff3333; font-weight:bold;">:to_json</span>
    data.<span style="color:#9900CC;">to_json</span>
  <span style="color:#9966CC; font-weight:bold;">else</span>
    data.<span style="color:#9900CC;">inspect</span>.<span style="color:#9900CC;">to_json</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre>
<p>Por lo que ahora podemos escribir cosas tal que:</p>
<pre class="ruby">$<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'div.cancel'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">append</span><span style="color:#006600; font-weight:bold;">&#40;</span>
    &lt;%=js link_to<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'Cancelar'</span>, <span style="color:#ff3333; font-weight:bold;">:action</span> =&gt; <span style="color:#996600;">'cancel'</span><span style="color:#006600; font-weight:bold;">&#41;</span> %&gt;
<span style="color:#006600; font-weight:bold;">&#41;</span>;
<span style="color:#008000; font-style:italic;"># o</span>
alert<span style="color:#006600; font-weight:bold;">&#40;</span>&lt;%=js error_message_for<span style="color:#006600; font-weight:bold;">&#40;</span>@error<span style="color:#006600; font-weight:bold;">&#41;</span> %&gt;<span style="color:#006600; font-weight:bold;">&#41;</span>;</pre>
<p>Finalmente, si queremos usar <em>partial's</em> tendremos que añadir este helper para soportar el nuevo formato de las plantillas (gracias a <a href="http://mad.ly/2007/11/02/javascript-embedded-ruby-templates-with-rails-out-of-the-box/">mad.ly</a>):</p>
<pre class="ruby"><span style="color:#9966CC; font-weight:bold;">def</span> partial<span style="color:#006600; font-weight:bold;">&#40;</span>name, options=<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  old_format = <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">template_format</span>
  <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">template_format</span> = <span style="color:#ff3333; font-weight:bold;">:html</span>
  js render<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:partial</span> =&gt; name <span style="color:#006600; font-weight:bold;">&#125;</span>.<span style="color:#9900CC;">merge</span><span style="color:#006600; font-weight:bold;">&#40;</span>options<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">ensure</span>
  <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">template_format</span> = old_format
<span style="color:#9966CC; font-weight:bold;">end</span></pre>
<p>Fíjate que no estamos sobreescribiendo el <em>render :partial</em> típico, es un helper simplemente. Para usarlo tendríamos que hacer algo como:</p>
<pre>$('#some_div').html(&lt;%=partial 'movie_information', :object =&gt; @movie %&gt;);</pre>
<p>En definitiva una forma mucho más cómoda, potente y simple de generar javascript desde el lado del servidor. Aunque insisto en que solo se debería de usar esta táctica para cosas triviales y pequeñas.</p>
<img src="http://bicosyes.com/?ak_action=api_record_view&id=627&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://bicosyes.com/generando-javascript-con-codigo-ruby-embebido-en-rails-2x/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails, ¿se acabó lo que se daba?</title>
		<link>http://bicosyes.com/ruby-on-rails-%c2%bfse-acabo-lo-que-se-daba/</link>
		<comments>http://bicosyes.com/ruby-on-rails-%c2%bfse-acabo-lo-que-se-daba/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 05:00:31 +0000</pubDate>
		<dc:creator>blaxter</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[trol]]></category>

		<guid isPermaLink="false">http://bicosyes.com/ruby-on-rails-%c2%bfse-acabo-lo-que-se-daba/</guid>
		<description><![CDATA[Hace 3 años se publicó lo que fue la primera versión de un increíble framework para el desarrollo Web en un lenguaje de script no muy conocido, Ruby. Este framework era Ruby On Rails, y comenzó la revolución. Desde entonces, &#8230; <a href="http://bicosyes.com/ruby-on-rails-%c2%bfse-acabo-lo-que-se-daba/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hace 3 años se publicó lo que fue la primera versión de un increíble framework para el desarrollo Web en un lenguaje de script no muy conocido, Ruby. Este framework era Ruby On Rails, y comenzó la <strong>revolución</strong>. </p>
<p>Desde entonces, en los dos años siguientes el tema de <strong>moda</strong> en la programación Web era lo <i>cool</i> que era <acronym title="Ruby on rails">RoR</acronym>, que molaba mogollón, que era la hostia, que viva la madre que lo parió, y esas cosas. Incluso el <a href="http://bicosyes.com/howto-instalando-unos-buenos-railes-ror/">año pasado</a> me dio por <a href="http://bicosyes.com/howto-integrando-rails-con-apache/">probarlo</a> a ver si realmente merecía la pena. Después de probar <a href="http://en.wikipedia.org/wiki/Model-View-Controller">algunas</a> <a href="http://en.wikipedia.org/wiki/Scaffold_%28programming%29">de sus</a> <a href="http://en.wikipedia.org/wiki/Active_record">características</a> lo dejé por dos razones, (1) ruby me <del datetime="2008-04-28T21:09:06+00:00">parece</del> <strong>parecía</strong> un lenguaje de script apestoso (yo lo veo como una mezcla de ada y perl, los cuales tienen unos puntos de vista totalmente opuestos!, ¡eso no se hace!), (2) ninguna de sus características es algo revolucionario, sí, son curiosas y chocan la primera vez, pero nada que no se puede hacer en otro lenguaje (en una tarde te programas la característica <em>X</em> que necesitas).</p>
<p>Últimamente se ha ido <a href="http://www.google.com/trends?q=ruby+on+rails&ctab=0">tranquilizando la cosa</a> y apenas se hablaba ya de Rails, o al menos no tanto. Y hace un mes, a raíz de <a href="http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html">este post</a>, empezaron las <strong>críticas</strong> <a href="http://9rules.com/programming/notes/2425/">sin</a> <a href="http://www.weiqigao.com/blog/2007/09/20/the_end_of_the_ruby_hype_re_top_10_reasons_java_sucks.html">parar</a> hacia éste. Famosa es ya la historia de <a href="http://twitter.com">Twitter</a>, aplicación escrita en RoR, que cuando alcanzó su éxito y comenzó su uso intensivo, estaba más tiempo caída que online (exagerando las cosas claro, pero era muy lenta y con bastantes caídas) y a partir de ésto se atacaba a rails criticando su falta de eficiencia y escalabilidad.</p>
<p>En mi opinión todo se está exagerando, simplemente <a href="http://www.infoq.com/news/2007/10/ruby-hype-cycle">la moda</a> de Ruby On Rails ha pasado (2 años creo que es ya más que suficiente), lo cual no quiere decir que vaya a desaparecer, pero posiblemente significa que no crecerá mucho más, y dado que en el ámbito empresarial no es que haya entrado muy fuerte (principalmente debido a una falta de soporte o entidad detrás del framework, a diferencia de, por ejemplo, GWT o apestosas tecnologías Java en general), esto significa que la <strong>caída</strong> ha comenzado y no hay quien la pare. </p>
<p>Si hace un año hubiese dicho que Rails es una mierda, la gente me hubiese escupido, pegado una paliza, Google no me indexaría, Microsoft me mandaría bindous con cada telepizza y los teletubbies me dedicarían una canción. Ahora, una vez que ha pasado la moda, ya se permite tocar al intocable, y quien quiera, puede decir lo que le plazca. Ves que bien. Por mi parte, cuando tenga que realizar una aplicación Web en el futuro, rails será una de mis <del datetime="2008-04-28T21:09:06+00:00">últimas</del> primeras opciones, <del datetime="2008-04-28T21:09:06+00:00">puesto</del> aunque que por <a href="http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks">alternativas</a>, no será.</p>
<img src="http://bicosyes.com/?ak_action=api_record_view&id=559&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://bicosyes.com/ruby-on-rails-%c2%bfse-acabo-lo-que-se-daba/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

