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

<channel>
	<title>Maestros del Web &#187; Rubén Davila Santos</title>
	<atom:link href="http://www.maestrosdelweb.com/author/ruben-davila/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.maestrosdelweb.com</link>
	<description>Un espacio para los entusiastas del web</description>
	<pubDate>Fri, 05 Sep 2008 14:24:12 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Introducción a Ruby on Rails</title>
		<link>http://www.maestrosdelweb.com/editorial/rubyonrails/</link>
		<comments>http://www.maestrosdelweb.com/editorial/rubyonrails/#comments</comments>
		<pubDate>Tue, 31 Oct 2006 00:00:00 +0000</pubDate>
		<dc:creator>Rubén Davila Santos</dc:creator>
		
		<category><![CDATA[Editorial]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Introducción al framework de Ruby on Rails incluyendo el típico -hola mundo- para dar nuestros primeros pasos.
Desde que tuve conocimiento de la revoluci&#243;n del dise&#241;o de aplicaciones web, popularmente conocido como Web 2.0, he sido testigo de varias tecnolog&#237;as que giran alrededor de &#233;sta: Sindicaci&#243;n de contenidos RSS, AJAX, Tags, Web Services, etc. 
Hoy en [...]]]></description>
			<content:encoded><![CDATA[<p><span class="intro">Introducción al framework de Ruby on Rails incluyendo el típico -hola mundo- para dar nuestros primeros pasos.</span><span id="more-362"></span></p>
<p>Desde que tuve conocimiento de la revoluci&oacute;n del dise&ntilde;o de aplicaciones web, popularmente conocido como Web 2.0, he sido testigo de varias tecnolog&iacute;as que giran alrededor de &eacute;sta: <a href="http://www.maestrosdelweb.com/editorial/sindicando/">Sindicaci&oacute;n de contenidos RSS</a>, <a href="http://www.maestrosdelweb.com/editorial/ajax/">AJAX</a>, <a href="http://www.maestrosdelweb.com/editorial/usarmetas/">Tags</a>, <a href="http://www.forosdelweb.com/showthread.php?t=415316">Web Services</a>, etc. </p>
<p>Hoy en d&iacute;a podemos encontrar muchas webs orientadas a la comunidad o la generaci&oacute;n de contenido por parte de los usuarios, como por ejemplo: <a href="http://www.technorati.com/">Technorati</a>, <a href="http://odeo.com/">Odeo</a>, <a href="http://www.basecamphq.com/">Basecamp</a>, <a href="http://del.icio.us/">del.icio.us</a>, <a href="http://digg.com/">digg</a>, etc. </p>
<p>Muchas de &eacute;stas aplicaciones web est&aacute;n siendo desarrolladas bajo Ruby on Rails, surgen varias interrogantes como&nbsp; el &iquest;por qu&eacute; no eligen otra plataforma?, &iquest;es Ruby on Rails mejor que otras plataformas?, &iquest;es s&oacute;lo una moda?. Estas preguntas merecen respuestas concretas, expliquemos en qu&eacute; consiste esto.</p>
<h3>&iquest;Qu&eacute; es Ruby?</h3>
<p><a href="http://www.ruby-lang.org/en/">Ruby</a> es un lenguaje de scripts, multiplataforma, netamente orientado a objetos es software libre, fue creado por Yukihiro Matsumoto conocido como Matz. La primera versi&oacute;n fue liberada en 1995, hereda varias caracater&iacute;sticas de lenguajes como: Perl, Smalltalk, Eiffel, Ada y Lisp. Como lo indica su propio autor, es un lenguaje &ldquo;aparentemente sencillo pero internamente complejo&rdquo;.</p>
<p>Esto quiere decir que mientras m&aacute;s nos abstraemos en el paradigma orientado a objetos notaremos realmente la complejidad del lenguaje (al menos fue mi caso, ya que vengo de lenguajes estructurados y orientados a eventos); lo considero un lenguaje muy intuitivo casi a un nivel de lenguaje humano. </p>
<p>Ruby fue dise&ntilde;ado para un desarrollo r&aacute;pido y sencillo. Cada d&iacute;a este lenguaje va ganando m&aacute;s adeptos, tanto as&iacute; que la empresa Sun Mirosystems, est&aacute; apoyando un proyecto llamado Jruby que es un interprete de Ruby escrito 100% en Java. </p>
<p>Entre las carecter&iacute;sticas del lenguaje se encuentran:</p>
<ul>
<li>Posibilidad de hacer llamadas directamente al sistema operativo.</li>
<li>Muy potente para el manejo de cadenas y expresiones regulares.</li>
<li>No se necesita declarar las variables.</li>
<li>La sintaxis es simple y consistente.</li>
<li>Gesti&oacute;n de memoria autom&aacute;tica.</li>
<li>Todo es un objeto.</li>
<li>M&eacute;todos Singleton.</li>
<li>un largo. </li>
</ul>
<p>Muy bien, hasta aqu&iacute; creo que tenemos una visi&oacute;n b&aacute;sica de lo que es Ruby.</p>
<h3>&iquest;Qu&eacute; es Rails?</h3>
<p><a href="http://rubyonrails.org/">Rails</a> es un framework para el desarrollo de aplicaciones web, software libre por naturaleza, est&aacute; basado en el patr&oacute;n de dise&ntilde;o Modelo Vista Controlador (MVC). Fue creado por David Heinemeier Hansson, empleado de la empresa 37signals.</p>
<p>Fue liberado por primera vez al p&uacute;blico en julio del 2004, y lo implemento en una aplicaci&oacute;n orientada a la administraci&oacute;n de proyectos llamada Basecamp. Actualmente se uni&eacute;ron m&aacute;s personas al desarrollo de Rails podemos visualizar aqu&iacute; a los integrantes. Rails est&aacute; basado en estos principios de desarrollo:</p>
<ul>
<li>Don&#8217;t Repeat Yourself</li>
<li>Convention Over Configuration</li>
</ul>
<h4>Primer principio:</h4>
<p>La primera regla que a mi buen entender significa &ldquo;No lo vuelvas a repetir&rdquo;, es una de las cosas m&aacute;s novedosas que he podido encontrar en este framework. Imaginate tener un formulario, y llamarlo las veces que quieras y desde donde quieras, simplemente con una l&iacute;nea c&oacute;digo.</p>
<p>Tener una tabla en tu <a href="http://www.maestrosdelweb.com/editorial/aspdb/">base de datos</a>, y manipular a los registros como un objeto y a sus campos como un atributo, sin necesidad de declarar nada, son s&oacute;lo algunas aplicaciones de este principio de desarrollo.</p>
<h4>El segundo principio:</h4>
<p>Nos dice &ldquo;Convenci&oacute;n antes que Configuraci&oacute;n&rdquo;, muy bien con esto el framework nos dice: oye he notado que tu siempre usas &eacute;sto de &eacute;sta forma, o veo que siempre tienes que configurar esto de aqu&iacute;, porque no hacemos una cosa, yo te doy todo esto configurado, si tu respetas &eacute;sta configuraci&oacute;n te ahorras tiempo, y sino quieres hacerlo, no hay problema no me molesto, para muestra un bot&oacute;n:</p>
<div class="codigo">
<pre>class Auto &lt; ActiveRecord::Base
  end</pre>
</div>
<h4>&iquest;Qu&eacute; hago con eso? </h4>
<p>la verdad no deber&iacute;amos hacer nada pero ya hicimos mucho, con esa declaraci&oacute;n de una clase, lo que hemos logrado es mapear a una <a href="http://www.maestrosdelweb.com/editorial/tutsql11/">tabla</a> en nuestra base de datos.</p>
<h4>&iquest;Por qu&eacute; en plural?</h4>
<p>Dicho de otra manera Rails buscar&aacute; una tabla llamada &ldquo;autos&rdquo;, en nuestra base de datos, esto es as&iacute; porque Rails cree conveniente que debe llamarse as&iacute; (principio de pluralizaci&oacute;n).</p>
<p>Aunque este comportamiento se puede desactivar de una manera muy sencilla, &iquest;Y si no la encuentra?, pues nos dar&aacute; un error. Y qu&eacute; ocurre si la tabla con la que quiero trabajar no tiene ese nombre exacto, no hay problema, con una l&iacute;nea m&aacute;s ser&aacute;s complacido:</p>
<div class="codigo">
<pre>class Auto &lt; ActiveRecord::Base
   set_table_name 'carros'
  end</pre>
</div>
<p>Con esto el framework comprender&aacute; que en vez de usar &#8216;autos&#8217;, deber&iacute;a usar &#8216;carros&#8217; as&iacute; de sencillo. Muy bien hasta aqu&iacute; tenemos una muy peque&ntilde;a noci&oacute;n de lo que es Ruby y Rails, ahora veamos lo necesario para tenerlo instalado en nuestra m&aacute;quina.</p>
<h3>Instalando Ruby</h3>
<h4>Versi&oacute;n FreeBSD:</h4>
<p>  Actualizando los ports<br />
  portsnap fetch<br />
  portsnap update<br />
  Instalando Ruby<br />
  cd /usr/ports/lang/ruby18<br />
  make install clean</p>
<h4>Versi&oacute;n Linux:</h4>
<p>  <a href="ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.5.tar.gz">Descargamos</a> el fuente<br />
  ./configure<br />
  make<br />
make install</p>
<h4>Para usuarios de Debian o Ubuntu:</h4>
<p>  sudo apt-get install ruby irb rdoc</p>
<h4>  Versi&oacute;n Windows </h4>
<p>  <a href="http://rubyforge.org/frs/download.php/12751/ruby185-21.exe">Descargar</a><br />
  Siguiente, Siguiente, Aceptar, No, deseo registrarme luego.<br />
Muy bien hasta aqu&iacute; ya tenemos instalado Ruby.</p>
<h3>Instalando Rails</h3>
<p>Si disponemos de conexi&oacute;n a internet el trabajo se resumen en:<br />
  gem install rails &#8211;include-dependencies. Para una instalaci&oacute;n manual debemos descargarnos cada uno de los m&oacute;dulos:</p>
<p>Los archivos deberan ser descargados en un s&oacute;lo directorio y los comandos ejecutados en ese directorio.</p>
<ul>
<li> gem install <a href="http://rubyforge.org/frs/download.php/9498/rake-0.7.1.gem">rake-0.7.1.gem</a> &nbsp;&nbsp;&nbsp; </li>
<li>gem install <a href="http://rubyforge.org/frs/download.php/9562/activesupport-1.3.1.gem">activesupport-1.3.1</a> </li>
<li> gem install <a href="http://rubyforge.org/frs/download.php/12245/activerecord-1.14.4.gem">activerecord-1.14.4.gem</a></li>
<li> gem install <a href="http://rubyforge.org/frs/download.php/12313/actionpack-1.12.5.gem">actionpack-1.12.5.gem</a> </li>
<li> gem install <a href="http://rubyforge.org/frs/download.php/12316/actionmailer-1.2.5.gem">actionmailer-1.2.5.gem</a> </li>
<li> gem install <a href="http://rubyforge.org/frs/download.php/12319/actionwebservice-1.1.6.gem">actionwebservice-1.1.6.gem</a></li>
<li> gem install <a href="http://rubyforge.org/frs/download.php/12322/rails-1.1.6.gem">rails-1.1.6.gem</a></li>
</ul>
<p>Muy bien hasta aqu&iacute; ya debemos tener instalado Ruby y Rails satisfactoriamente, ahora creemos nuestra primera aplicaci&oacute;n:</p>
<p><img src="http://www.maestrosdelweb.com/images/editorial/railsdemo.jpg" width="400" height="208" /></p>
<p>Creamos un directorio de trabajo y nos ubicamos dentro de el en la consola.</p>
<h4>Rails ejemplo:</h4>
<p>Automaticamente se generar&aacute; el esqueleto de nuestra aplicaci&oacute;n.<br />
  Muy bien ahora entramos en el directorio que se genero y ejecutamos el servidor web que viene con Ruby (Webrick):<br />
ruby script/server Y veremos una pantalla de bienvenida a nuestra aplicaci&oacute;n: Ahora vamos a realizar la prueba de fuego un &#8216;Mundo Hola!&#8217;, para esto realiza lo siguiente:</p>
<p>Creamos un controlador ruby script/generate controller test,<br />
  ahora se habr&aacute;n creado varios archivos entre ellos edita &#8216;directorio_trabajo/ejemplo/app/controllers/test_controller.rb&#8217;:<br />
  Vamos agregarle un m&eacute;todo:</p>
<div class="codigo">
<pre>class TestController &lt; ActionController::Base
  &nbsp; def index
  &nbsp; end
  end</pre>
</div>
<p>Ahora crearemos la vista para esta acci&oacute;n que acabamos de crear, en &#8216;directorio_trabajo/ejemplo/app/views/test&#8217; crea un archivo llamado &#8216;index.rhtml&#8217; y dentro de el colocas el texto &#8216;Mundo Hola desde RoR!&#8217;, lo grabas y colocas lo siguiente en tu<a href="http://www.maestrosdelweb.com/editorial/firefox/"> navegador</a>: http://localhost:3000/test/</p>
<p><img src="http://www.maestrosdelweb.com/images/editorial/mundohola.jpg" width="425" height="267" /></p>
<p>Supongamos que el controlador &quot;test&quot; es el controlador principal de tu aplicaci&oacute;n, y naturalmente no ser&iacute;a lo ideal que los usuarios ingresen a tu p&aacute;gina a trav&eacute;s de &quot;tudominio.com/test&quot;, deber&iacute;an ingresar simplemente escribiendo &quot;tudominio.com&quot;, bien para lograr esto editemos &#8216;directorio_trabajo/ejemplo/config/routes.rb&#8217;:<br />
  descomentamos la l&iacute;nea<br />
  # map.connect &#8221;, :controller =&gt; &quot;welcome&quot;<br />
  quedar&iacute;a as&iacute;:</p>
<p>
<div class="codigo">
<pre>map.connect '', :controller =&gt; &quot;test&quot;:</pre>
</div>
<p>Y como nos indican unas l&iacute;neas arriba, debemos borrar el archivo &#8216;directorio_trabajo/ejemplo/public/index.html&#8217;, y ahora si se podr&iacute;a acceder a trav&eacute;s de &#8216;http://localhost:3000/&#8217;.</p>
<p>Bueno espero que esta peque&ntilde;a introducci&oacute;n haya sido suficiente para motivar a los lectores a investigar m&aacute;s sobre est&aacute; interesante plataforma de desarrollo web.</p>
<p>Quiero tambi&eacute;n aprovechar la oportunidad para invitar a todos los amigos que de alguna manera estamos ligados con la tecnolog&iacute;a, a generar <a href="http://www.maestrosdelweb.com/editorial/espanol/">contenido en nuestro idioma</a>, ya que considero que es&nbsp; una gran barrera para el aprendizaje de muchos, creo que la tecnolog&iacute;a no tiene sentido sino esta al alcanze de todos.</p>
<p>Aqu&iacute; les dejo una peque&ntilde;a bibliograf&iacute;a:</p>
<h4>Libros-Ingl&eacute;s</h4>
<ul>
<li><a href="http://www.pragmaticprogrammer.com/titles/ruby/index.html">Programming Ruby</a></li>
<li> <a href="http://www.pragmaticprogrammer.com/title/rails2/">Agile Web Development with Rails?Second Edition</a></li>
<li> <a href="http://www.pragmaticprogrammer.com/titles/fr_rr/index.html">Rails Recipes</a></li>
</ul>
<h4>Libros-Espa&ntilde;ol</h4>
<ul>
<li><a href="http://pickaxe.ruby.org.es/">Traducci&oacute;n de Programming Ruby</a></li>
</ul>
<h4>Foros-Ingl&eacute;s</h4>
<ul>
<li> <a href="http://ruby-forum.com/">Ruby-Forum</a></li>
<li> <a href="http://www.rubyonrailsforum.com/">Ruby on Rails Forum</a></li>
<li> <a href="http://forum.textdrive.com/viewforum.php?id=9">TextDrive Community Forum/RubyOnRails</a></li>
<li><a href="http://www.nabble.com/Ruby-on-Rails-f13830.html"> Nabble - Ruby on Rails</a></li>
</ul>
<h4>Foros-Espa&ntilde;ol</h4>
<ul>
<li> <a href="http://www.forosdelweb.com/forumdisplay.php?f=105">Ruby On Rails - Foros del Web</a></li>
<li> <a href="http://www.ruby-forum.com/forum/22">Ruby Forum - Espa&ntilde;ol</a></li>
</ul>
<h4>P&aacute;ginas Web y Blogs</h4>
<ul>
<li> <a href="http://blogs.onrails.com.ar/">Argentina On Rails</a></li>
<li><a href="http://www.inwebwetrust.net/inwebwetrust"> in web we trust</a></li>
<li> <a href="http://entren.ivanyvenian.com/">Mi viaje en tren</a></li>
<li> <a href="http://ruby.org.es/">Comunidad Hispana de usuarios de Ruby</a></li>
<li> <a href="http://sobrerailes.com/">SobreRailes</a></li>
<li> <a href="http://sofanaranja.com/">Sofa Naranja</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.maestrosdelweb.com/editorial/rubyonrails/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
