<?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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Mexico On Rails</title>
	<atom:link href="http://blog.mexicoonrails.com.mx/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mexicoonrails.com.mx</link>
	<description>Evangelizando Mexico con Ruby On Rails</description>
	<pubDate>Sun, 29 Jun 2008 02:40:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>es-mx</language>
		<!-- podcast_generator="podPress/8.8" -->
		<copyright>&#xA9;Edgar J. Suarez </copyright>
		<managingEditor>edgar@mexicoonrails.com.mx (Edgar J. Suarez)</managingEditor>
		<webMaster>edgar@mexicoonrails.com.mx(Edgar J. Suarez)</webMaster>
		<category></category>
		<ttl>1440</ttl>
		<itunes:keywords>ror,ruby,rails,screencasts,espanol,tutorial</itunes:keywords>
		<itunes:subtitle>Mexico On Rails Screencast</itunes:subtitle>
		<itunes:summary>Serie de screencasts con el objetivo de motivar el desarrollo en Ruby On Rails.</itunes:summary>
		<itunes:author>Edgar J. Suarez</itunes:author>
		<itunes:category text="Technology">
  <itunes:category text="Software How-To"/>
</itunes:category>
<itunes:category text="Education">
  <itunes:category text="Training"/>
</itunes:category>
		<itunes:owner>
			<itunes:name>Edgar J. Suarez</itunes:name>
			<itunes:email>edgar@mexicoonrails.com.mx</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://media.mexicoonrails.com.mx/images/mxor_logo.jpg" />
		<image>
			<url>http://media.mexicoonrails.com.mx/images/mxor_logo_sm.jpg</url>
			<title>Mexico On Rails</title>
			<link>http://blog.mexicoonrails.com.mx</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Primera reunión de grupo de usuarios de Ruby en México</title>
		<link>http://blog.mexicoonrails.com.mx/2008/06/24/primera-reunion-de-grupo-de-usuarios-de-ruby-en-mexico/</link>
		<comments>http://blog.mexicoonrails.com.mx/2008/06/24/primera-reunion-de-grupo-de-usuarios-de-ruby-en-mexico/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 04:20:44 +0000</pubDate>
		<dc:creator>edgar js</dc:creator>
		
		<category><![CDATA[Enlaces]]></category>

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

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

		<category><![CDATA[Primeros pasos]]></category>

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

		<guid isPermaLink="false">http://blog.mexicoonrails.com.mx/?p=25</guid>
		<description><![CDATA[Hoy fue el tan esperado día (al menos por mí) en el que nos reunimos unos cuantos miembros del grupo de LA RailsConf.
En breve, me pareció una reunión bastante amena aún cuando no teníamos un programa a seguir. Todos los que asistieron son personas de lo más chéveres y conocedores del tema.
Estoy muy contento más [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy fue el tan esperado día (al menos por mí) en el que nos reunimos unos cuantos miembros del <a href="http://groups.google.com/group/la-railsconf" target="_blank" rel="nofollow">grupo de LA RailsConf</a>.</p>
<p>En breve, me pareció una reunión bastante amena aún cuando no teníamos un programa a seguir. Todos los que asistieron son personas de lo más chéveres y conocedores del tema.</p>
<p>Estoy muy contento más que nada porque ahora sé que sí existen desarrolladores de Ruby en México, además de participantes que pertenecen a empresas que trabajan con Rails profesionalmente!</p>
<p>Espero que para las próximas reuniones se pueda tener una organización mejor y un par de ponencias, ya que esta primera vez se trató más que nada en presentarnos y hablar una pizca de TDD y BDD.</p>
<p>Punto y aparte, Alejandro Juárez hizo una invitación a un curso que se impartirá a partir del próximo lunes 30 de junio. Lamentablemente sólo se cuenta con capacidad para 16 personas (quedan 5 en el momento en que escribo este post).</p>
<p>Tristemente no puedo asistir ya que es a las 10am y no puedo faltar a mi trabajo. Pero para los interesados, no olviden <a href="http://132.248.7.154/" target="_blank" rel="nofollow">registrarse</a> antes de que se agoten los lugares.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mexicoonrails.com.mx/2008/06/24/primera-reunion-de-grupo-de-usuarios-de-ruby-en-mexico/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rubro: Sesiones ActiveRecord</title>
		<link>http://blog.mexicoonrails.com.mx/2008/06/23/rubro-sesiones-activerecord/</link>
		<comments>http://blog.mexicoonrails.com.mx/2008/06/23/rubro-sesiones-activerecord/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 16:12:10 +0000</pubDate>
		<dc:creator>edgar js</dc:creator>
		
		<category><![CDATA[ActionController]]></category>

		<category><![CDATA[Primeros pasos]]></category>

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

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

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

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

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

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

		<guid isPermaLink="false">http://blog.mexicoonrails.com.mx/?p=22</guid>
		<description><![CDATA[


Primer screencast, con un poco de nerviosismo y dolores de cabeza al convertir el video (si tienen problemas para visualizarlo por favor reportenlo).
Rubro será el nombre de la aplicación que se desarrollará en esta primera serie de screencasts.
No olvides suscribirte al feed de los screencasts. (Mientras nos aceptan en iTunes ;))

Código fuente en github
Cross-Site Reference [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center">
<img src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/06/mxor_screencasts.jpg" alt="México On Rails Screencasts" title="México On Rails Screencasts" />
</p>
<p>Primer screencast, con un poco de nerviosismo y dolores de cabeza al convertir el video (si tienen problemas para visualizarlo por favor reportenlo).</p>
<p>Rubro será el nombre de la aplicación que se desarrollará en esta primera serie de screencasts.</p>
<p>No olvides suscribirte al <a href="http://blog.mexicoonrails.com.mx/feed?podcasts">feed</a> de los screencasts. (Mientras nos aceptan en iTunes ;))</p>
<ol>
<li><a href="http://github.com/edgarjs/rubro/tree/master" target="_blank">Código fuente en github</a></li>
<li><a href="http://www.quarkruby.com/2007/9/20/ruby-on-rails-security-guide#csrf" target="_blank">Cross-Site Reference Forgery (CSRF)</a></li>
</ol>
<p><em><strong>Errata:</strong> En el screencasts me refería a que el método <tt>protect_from_forgery</tt> brinda protección contra Cross-Site Reference Forgery, cosa distinta de Cross-Site Scripting <img src='http://blog.mexicoonrails.com.mx/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </em></p>
<p><strong>UPDATE</strong>: Para suscribirte en iTunes:</p>
<p>
<a href='http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=283925295'><img src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/06/itunes.jpg" alt="Suscribirse en iTunes" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mexicoonrails.com.mx/2008/06/23/rubro-sesiones-activerecord/feed/</wfw:commentRss>
			<enclosure url="http://blog.mexicoonrails.com.mx/podpress_trac/feed/22/0/rubro_ep1.mov" length="9577620" type="video/quicktime"/>
<itunes:duration>00:02:46</itunes:duration>
		<itunes:subtitle>Configurando la aplicacion para guardar las sesiones en la base de datos.</itunes:subtitle>
		<itunes:summary>Serie de screencasts con el objetivo de motivar el desarrollo en Ruby On Rails.</itunes:summary>
		<itunes:keywords>ror,ruby,rails,screencasts,espanol,tutorial</itunes:keywords>
		<itunes:author>Edgar J. Suarez</itunes:author>
		<itunes:explicit>no</itunes:explicit>
		<itunes:block>No</itunes:block>
	</item>
		<item>
		<title>MisNuevas, un aggregator con sabor a RoR</title>
		<link>http://blog.mexicoonrails.com.mx/2008/06/18/misnuevas-un-aggregator-con-sabor-a-ror/</link>
		<comments>http://blog.mexicoonrails.com.mx/2008/06/18/misnuevas-un-aggregator-con-sabor-a-ror/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 23:49:13 +0000</pubDate>
		<dc:creator>edgar js</dc:creator>
		
		<category><![CDATA[+1 Rails]]></category>

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

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

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

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

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

		<category><![CDATA[red social]]></category>

		<guid isPermaLink="false">http://blog.mexicoonrails.com.mx/?p=19</guid>
		<description><![CDATA[David Jairala (de Ecuador) y Gustavo Leal Cueva (de México), acaban de lanzar una aplicación hecha totalmente en Rails.

MisNuevas.com es un aggregator de noticias generales, aunque con un toque más geek (tecnología, desarrollo, gadgets, etc.)



Lo que le da sabor a esta aplicación es el hecho de que esté desarrollada en Ruby On Rails y sea [...]]]></description>
			<content:encoded><![CDATA[<p>David Jairala (de Ecuador) y Gustavo Leal Cueva (de México), acaban de lanzar una aplicación hecha totalmente en Rails.<br />
<a href="http://www.misnuevas.com/" target="_blank"><br />
MisNuevas.com</a> es un aggregator de noticias generales, aunque con un toque más geek (tecnología, desarrollo, gadgets, etc.)</p>
<p style="text-align:center">
<img src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/06/misnuevas.gif" alt="Mis Nuevas" title="Mis Nuevas" />
</p>
<p>Lo que le da sabor a esta aplicación es el hecho de que esté desarrollada en Ruby On Rails y sea parte de la comunidad de desarrolladores hispanohablantes.</p>
<p>Les deseamos mucha suerte y esperemos que contribuya a la motivación para el desarrollo en Rails tanto en México como latinoamérica.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mexicoonrails.com.mx/2008/06/18/misnuevas-un-aggregator-con-sabor-a-ror/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RailsConf latinoamericana</title>
		<link>http://blog.mexicoonrails.com.mx/2008/06/16/railsconf-latinoamericana/</link>
		<comments>http://blog.mexicoonrails.com.mx/2008/06/16/railsconf-latinoamericana/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 16:42:40 +0000</pubDate>
		<dc:creator>edgar js</dc:creator>
		
		<category><![CDATA[Noticias]]></category>

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

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

		<guid isPermaLink="false">http://blog.mexicoonrails.com.mx/?p=17</guid>
		<description><![CDATA[Después de mucho tiempo buscando y sin perder las esperanzas&#8230; por fin hace unos días me enteré gracias a Iván de una lista de correo en donde se está planeando la primera RailsConf en latinoamérica!



Apenas está en proceso de planeación pero es una gran motivación el saber que sí existen desarrolladores Rails en México (y [...]]]></description>
			<content:encoded><![CDATA[<p>Después de mucho tiempo buscando y sin perder las esperanzas&#8230; por fin hace unos días me enteré gracias a <a href="http://entren.ivanyvenian.com/" target="_blank">Iván</a> de una lista de correo en donde se está planeando la primera RailsConf en latinoamérica!</p>
<p style="text-align:center">
<img src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/06/railsconf_logo.png" alt="RailsConf" title="RailsConf" />
</p>
<p>Apenas está en proceso de planeación pero es una gran motivación el saber que sí existen desarrolladores Rails en México (y en latam en general).</p>
<p>Si te interesa estar al tanto del avance de esta RailsConf latinoamericana no olvides visitar <a href="http://groups.google.com.mx/group/la-railsconf?hl=es" target="_blank">La RailsConf</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mexicoonrails.com.mx/2008/06/16/railsconf-latinoamericana/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Empezando con Ruby on Rails</title>
		<link>http://blog.mexicoonrails.com.mx/2008/05/12/empezando-con-ruby-on-rails/</link>
		<comments>http://blog.mexicoonrails.com.mx/2008/05/12/empezando-con-ruby-on-rails/#comments</comments>
		<pubDate>Mon, 12 May 2008 17:26:59 +0000</pubDate>
		<dc:creator>edgar js</dc:creator>
		
		<category><![CDATA[Primeros pasos]]></category>

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

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

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

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

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

		<guid isPermaLink="false">http://blog.mexicoonrails.com.mx/?p=16</guid>
		<description><![CDATA[Este artículo es una traducción de Getting Started with Ruby on Rails hecha por mi. El artículo original fue escrito por Dan Benjamin en A List Apart
If this translation breaks some copyright and/or hurts someone&#8217;s feelings, please let me know. Thanks  



Probablemente has escuchado acerca de Ruby on Rails a estas alturas. Tus amigos [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>Este artículo es una traducción de <a href="http://alistapart.com/articles/gettingstartedwithrubyonrails" target="_blank">Getting Started with Ruby on Rails</a> hecha por mi. El artículo original fue escrito por Dan Benjamin en <a href="http://alistapart.com/" target="_blank">A List Apart</a></em></p>
<p><em>If this translation breaks some copyright and/or hurts someone&#8217;s feelings, please let me know. Thanks <img src='http://blog.mexicoonrails.com.mx/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </em></p></blockquote>
<p style="text-align:center">
<img alt="Empezando con Ruby on Rails" src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/06/geting-started-ror.jpg" />
</p>
<p>Probablemente has escuchado acerca de Ruby on Rails a estas alturas. Tus amigos desarrolladores están delirando sobre él -hablando sobre cómo escribieron una aplicación en menos de la mitad del tiempo que hubiera llevado usando alguna otra tecnología- cómo disfrutaron realmente en vez de estresarse, y luego usaron su tiempo extra en la playa. Rails seguro que suena como una tecnología obligada. Pero ¿qué es, y cómo cabe dentro de la gran imagen del desarrollo web?</p>
<p>Si eres un diseñador, arquitecto de interfaz de usuario, escritor o un desarrollador de software que todavía no conoce Rails, debes estar preguntándote de qué trata toda esta tecnología. ¿Puede realmente transformate, del suave no-desarrollador, al programador de aplicaciones web en una noche? ¿es Rails realmente la todopoderosa plataforma de desarrollo? ¿Qué demonios son Subversion y Git? ¿Necesito aprender todo esto sólo para hacer diseño para Rails?</p>
<p>En este artículo, te ayudaré a prepararte para este primer saqueo dentro de Rails explicando qué es, cómo funciona, y dónde cabe dentro del espectro del desarrollo web y diseño. Trataré los temas de arriba y más, con respuestas enfocadas hacia desarrolladores no-Rails, diseñadores, y otros profesionales creativos.</p>
<p>Este artículo <em>no es</em> un tutorial de programación Rails. No escribiremos código aquí, pero te introduciré a algunos conceptos importantes críticos para entender cómo funciona el framework Rails. Además explicaré lo que necesitas para saber cómo trabajar con desarrolladores Rails e integrar tu XHTML y CSS dentro de proyectos Rails.</p>
<p>Me centraré en los tópicos y temas que he aprendido son los más importantes para la gente creativa en vez de aburrirte con espantosos detalles técnicos. Sí, tendrás que aprender lo que significan términos como &#8220;MVC&#8221; por ejemplo pero sólo en el contexto de tener las cosas hechas.</p>
<p><span id="more-16"></span></p>
<h3>¿Qué es Rails, y por qué usarlo?</h3>
<p>David Heinemeier Hansson, un socio en <a href="http://37signals.com/" target="_blank">37signals</a>, creó Ruby on Rails. Conforme cronstruyó Basecamp, su aplicación insignia, David extrajo la base de la aplicación y creó código que pudiera usar y reutilizar para el software que quisiera construir en el camino.</p>
<p>El framework que él creó probó ser extensible, expandible, y multi-propósito. Él decidió compartirlo como software de código abierto. Un pequeño grupo de desarrolladores, ahora conocido como el <em>Rails Core Team</em>, formó, mejoró y expandió el framework. Después de un gran esfuerzo, Ruby on Rails maduró y se volvió una plataforma de desarrollo de software robusta, sólida. Hoy, Rails tiene una <a href="http://rubyonrails.com/community" target="_blank" rel="nofollow">fuerte comunidad</a> y <a href="http://rubyonrails.com/docs" target="_blank" rel="nofollow">buena documentación</a>, y es usado por miles de desarrolladores para dar poder a cientos de sitios web, como <a href="http://twitter.com/" rel="nofollow" target="_blank">Twitter</a>, <a href="http://blinksale.com/" rel="nofollow" target="_blank">Blinksale</a>, y el mismo sitio que estás leyendo ahora (<a href="http://alistapart.com/articles/gettingstartedwithrubyonrails" rel="nofollow" target="_blank">artículo original</a>). Incluso hay una lista más grande de sitios en <a href="http://www.workingwithrails.com/browse/sites" rel="nofollow" target="_blank">Working with Rails</a>.</p>
<p>Rails está diseñado para hacer la construcción de aplicaciones web más simple y fácil. Rails provee a los desarrolladores con un largo, fácil de expandir set de bloques de construcción que pueden usar (y reusar) para crear aplicaciones web. Los desarrolladores pueden usar, integrar, y personalizar estos componentes de código en cualquier modo que quieran, para crear la funcionalidad única que necesiten para sus aplicaciones. Construyendo software de esta manera realmente ayuda a reducir el tiempo que toma para los desarrolladores el crear y después mantener sus aplicaciones. Además ayuda a estandarizar la manera en la que las aplicaciones son construídas, haciendo más fácil para muchos desarrolladores el colaborar y escribir más código uniforme.</p>
<p>Los diseñadores web tienen trucos de CSS probados con el tiempo como punto de comienzo, estándares web a los cuales adherirse, y los flujos de trabajo de Photoshop con los que pueden contar. Como estas herramientas, Rails provee estándares, convenciones, herramientas, y una fundación sobre la cual los desarrolladores pueden construir aplicaciones escribiendo código personalizado usando las librerías pre-construídas de Rails.</p>
<h3>Rails vs. PHP</h3>
<p>Una de las preguntas que la gente hace frecuentemente acerca de Rails es cómo difiere con PHP. <a href="http://php.net/" rel="nofollow" target="_blank">PHP</a> es un lenguaje de scripts con fines generales que puede ser embebido justo dentro de páginas HTML, haciendo fácil para los desarrolladores el crear dinámicamente páginas web generadas rápida y fácilmente. Muchos diseñadores web y la mayoría de los desarrolladores web han usado PHP en alguna capacidad. A causa de su proliferación (es generalmente instalado por defecto en la mayoría de los webhosts), PHP es comúnmente el lenguaje preferido para manejar tareas simples como <a href="http://www.alistapart.com/articles/keepingcurrent/" rel="nofollow" target="_blank">mantener la navegación de tu sitio actual</a>, <a href="http://www.alistapart.com/articles/betterrotator" rel="nofollow" target="_blank">aleatorizar imágenes en un sitio web</a>, e incluso crear un <a href="http://www.alistapart.com/articles/phpcms/" rel="nofollow" target="_blank">sistema para manejo de contenido simple</a>. PHP es además útil para crear aplicaciones de código abierto auténticas y aplicaciones web comerciales como <a href="http://wordpress.org/" rel="nofollow" target="_blank">WordPress</a>, y <a href="http://www.userscape.com/products/helpspot/" rel="nofollow" target="_blank">HelpSpot</a>, ambas aplicaciones PHP.</p>
<p>Técnicamente hablando, no deberíamos comparar PHP, un lenguaje de programación, con Rails, un framework de aplicaciones web. En lugar de eso, deberíamos comparar PHP con el <a href="http://www.ruby-lang.org/" target="_blank">lenguaje de programación Ruby</a> sobre el cual Rails fue construído. Ruby fue creado en 1995 por <a href="http://es.wikipedia.org/wiki/Yukihiro_Matsumoto" rel="nofollow" target="_blank">Yukihiro &#8220;Matz&#8221; Matsumoto</a>, y lentamente ha obtenido un seguimiento, explotando en popularidad y obteniendo más atención en 2006, en gran parte por la popularidad de Rails. En el momento de este escrito, Ruby se encuentra en el 9o. lugar de los lenguajes más populares en el mundo.</p>
<p>La cita del sitio de Ruby, &#8220;Ruby es un lenguaje de programación dinámico y de código abierto enfocado a la simplicidad y productividad. Su elegante sintaxis se siente natural al leerla y fácil al escribirla&#8221;. Esta elegancia y enfoque a la simplicidad hace a Ruby un lenguaje muy accesible para gente nueva en la programación, y ofrece un refrescante cambio de ritmo sazonado a los desarroladores.</p>
<p>Veamos através de un ejemplo rápido, sólo para tener un &#8220;sentimiento&#8221; de lo que estamos hablando. Digamos que queremos contar de 1 a 10. En PHP, el código podría lucir así:</p>
<pre name="code" class="php">
for($i = 1; $i <= 10; $i++) {
  echo $i;
}</pre>
<p>Si estás familiarizado con C, Java, u otras estructuras de control al estilo C, esto es sencillo para ti. Pero si eres nuevo en esto, podría parecer intimidante. Aquí está el mismo código en Ruby:</p>
<pre name="code" class="ruby">
10.times do |i|
  puts i
end</pre>
<p>Ruby además tiene sus propios trucos y atajos que deberían hacer incluso a un hacker de Perl feliz. La siguiente línea hace la misma cosa que los ejemplos de arriba:</p>
<pre name="code" class="ruby">
puts *(1..10)</pre>
<p>Este tipo de flexibilidad y simplicidad hace a Ruby un lenguaje accesible para desarrolladores de software y diseñadores web de todos los niveles.</p>
<p>Mientras PHP es un lenguaje de programación amigable a la web, Rails es un framework de aplicaciones web escrito en Ruby (y con acceso a toda la funcionalidad de Ruby para el arranque). Y por la manera en la que funciona Rails, cada aplicación que construyas vive en la forma de un proyecto, con archivos y carpetas específicas. A diferencia de muchas aplicaciones PHP que a menudo &#8220;funcionan sólo&#8221; con subirlas a un webserver, las aplicaciones Rails dependen de su propio framework y una infraestructura de hosting personalizada (frecuentemente llamada un &#8220;stack&#8221; [pila]). Como resultado, las aplicaciones Rails pueden ser un poco más difícil de desplegar. Afortunadamente, un número de compañías de web hosting se especializan en desplegamiento, hosting, y administración de aplicaciones Rails.</p>
<p>Entonces ¿cómo podrías saber cuándo usar Rails y cuándo usar PHP? No hay nada que uno no pueda hacer en Rails que no se pueda hacer en PHP (o viceversa), así que al final es cuestión de elección. Para mí personalmente, tengo una regla simple: si estoy añadiendo funcionalidad simple (como rotar encabezados de imágenes) a un sitio web sencillo, usaré a menudo PHP. Si estoy construyendo una aplicación web, especialmente con una base de datos, usaré Rails. De nuevo, ambos pueden hacer lo mismo, pero para mí el framework Rails es maravilloso para el tipo de desarrollo de aplicaciones web que me gusta hacer.</p>
<p>Cabe señalar que hay frameworks con metas similares a las de Ruby on Rails que están escritas en PHP, tales como <a href="http://www.cakephp.org/" rel="nofollow" target="_blank">CakePHP</a> y <a href="http://codeigniter.com/" rel="nofollow" target="_blank">CodeIgniter</a>.</p>
<h3>Mitos de Rails</h3>
<p>Antes de ahondar un poco más a fondo en lo que es en realidad Rails, qué hace, y cómo lo podrías usar, quiero disipar unos cuantos mitos que los no-desarrolladores a menudo tienen sobre el framework. Esta lista en realidad viene de preguntas reales que gente real me ha preguntado sobre Rails en los últimos años.</p>
<h4>Mito #1: Rails es un sistema para gestión de contenido (CMS)</h4>
<p>He mencionado que Rails hace súper fácil el crear aplicaciones web rápidamente -que tiene un montón de funcionalidad y componentes preconstruídos. Pero lo que en realidad Rails te da -el framework del que estamos hablando- es <em>código</em>. Rails no es una pieza de software plug-and-play que se acostumbre adaptar a aplicaciones específicas, mientras sólo se integra algo de diseño a lo largo del camino. Puedes pensar en Rails como si fuera un elaborado menú de código del que los desarrolladores pueden escoger, modificar, y extender para crear un aplicación completamente personalizada.</p>
<h4>Mito # 2: Rails te deja hacer aplicaciones mil millones de veces más rápido</h4>
<p>En cierto modo, la excelente campaña de publicidad &#8220;Rails lo hace fácil&#8221; de hecho ha dañado algunas tiendas independientes de desarrollo Rails. Los consumidores esperan que las aplicaciones Rails se rueden en días independientemente del set de sus características. En realidad, las aplicaciones Rails no son escritas para tí automáticamente. Rails ahorra tiempo a los desarrolladores dejándolos concentrarse en la funcionalidad específica de la aplicación en vez de cosas como la interconectividad con la base de datos. Se ocupa de todo el trabajo necesario para construír la interacción del usuario. Los desarrolladores pueden usar este código pre-construído, y utilizar más tiempo haciendo aplicaciones que son más fiables y fácil de usar. Aún los proyectos Rails pueden ser un poco complicados. Los desarrolladores Rail deben seguir escribiendo código real (y a menudo complejo), interacciones, y pruebas. Rails hace el desarrollo más divertido y elimina gran parte del tedio que participa en la construcción de aplicaciones web, pero no las construye para ti.</p>
<h4>Mito #3: No necesitas ser programador para hacer aplicaciones Rails</h4>
<p>Escucho esto mucho, y por supuesto es falso. En realidad, los desarrolladores Rails hacen mucho más que ensamblar componentes. Seguro, ellos usan convenciones de Rails y construyen encima de una plataforma comprensiva, pero aún así escriben código nuevo y único.</p>
<p>Es verdad, sin embargo, que no podrías necesitar ser un desarrollador experimentado para crear una aplicación Rails como lo necesitarías ser para construír, por ejemplo, una aplicación PHP, Java, o C. Esto es debido a la simplicidad del framework Rails y a la elegancia y legibilidad del lenguaje de programación Ruby, sobre el cual Rails se sienta. Aún necesitas aprender a escribir código.</p>
<h3>Empezando</h3>
<p>Tener Rails en marcha en tu computadora está fuera del alcance de este artículo. Afortunadamente, la última versión de Mac OS X 10.5 (Leopard) viene con Rails pre-instalado (o puedes <a href="http://hivelogic.com/articles/ruby-rails-mongrel-mysql-osx/" rel="nofollow" target="_blank">hacerlo tú mismo</a>). He escrito un <a href="http://hivelogic.com/articles/ruby-rails-mongrel-mysql-osx/" target="_blank" rel="nofollow">tutorial para instalar Rails en versiones anteriores de Mac OS X</a>. Hay un <a href="http://rubyforge.org/frs/?group_id=167" target="_blank" rel="nofollow">One-Click Installer para windows</a>. También puedes descargar el código fuente o encontrar recursos adicionales en <a href="http://rubyonrails.com/down" target="_blank">el sitio de Ruby on Rails</a> para ayudarte a tener las cosas en marcha. (<em>N.T. También puedes <a href="http://blog.mexicoonrails.com.mx/2008/04/10/instalar-rails-en-windows-y-ubuntu/" target="_blank" rel="nofollow">instalar Rails en linux</a></em>).</p>
<p>En lugar de esperar a ir através de los pasos para tener Rails instalado por primera vez, por ahora, he creado un proyecto Rails por defecto que puedes descargar y mirar en cualquier computadora, independientemente de si tienes Rails instalado o no. Toma <a href="http://alistapart.com/d/gettingstartedwithrubyonrails/demo.zip">el archivo</a> y descomprimelo en algún lugar que puedas encontrarlo.</p>
<p><strong>Nota:</strong> Las carpetas y archivos que encontrarás en el archivo son idénticos a lo que Rails hubiera creado si corrieras <tt>rails demo</tt> en la línea de comandos, seguido por <tt>script/generate scaffold article body:string</tt>. De nuevo, estos son comandos que jamás podrías correr, pero los desarrolladores Rails los usan para ayudarse a crear el código que usan en sus proyectos.</p>
<h3>MVC</h3>
<p>Hablando de crear código, hay algunos conceptos de desarrollo de software que deberías conocer -incluso como diseñador- antes de entrar de lleno a Rails. Entender estos conceptos te ayudará a entender la estructura de Rails, y hacerte más fácil el trabajo con el framework mismo.</p>
<p>Rails implementa una técnica de ingeniería de software llamada modelo-vista-controlador (model-view-controller), comúnmente abreviada como MVC. Esta técnica (o patrón) separa la lógica de negocios (cosas como interacción con la base de datos) de la interfaz de usuario, la cual llamamos lógica de presentación. Esta separación en realidad hace la vida del diseñador mucho más fácil, porque a diferencia de otros web frameworks, la cantidad de código Rails que un diseñador tiene que ver y acomodar alrededor es significativamente reducida.</p>
<p>En Rails, cada una de estas diferentes piezas de la aplicación se mantienen en diferentes carpetas. La lógica de negocios (los modelos y los controladores) son guardados separadamente de las vistas. Lo que es importante entender aquí es que MVC significa que el XHTML y CSS que tu creas es almacenado lo más separado posible de los niveles más profundos de código. Desarrolladores puros ven menos diseño, mientras los diseñadores se meten menos con el código.</p>
<p>(<em>N.T. <a href="http://blog.mexicoonrails.com.mx/2008/04/10/entendiendo-el-flujo-de-una-aplicacion-rails/" target="_blank" rel="nofollow">Entendiendo el flujo de una aplicación Rails</a></em>)</p>
<h3>Cómo editar archivos Rails</h3>
<p>Rails guarda sus archivos como texto plano, por lo que puedes escoger cualquier editor de texto para editar los archivos en un proyecto Rails. Yo prefiero una aplicación de Mac OS X llamada TextMate, la cual es ideal para trabajar con Rails. BBEdit, otra aplicación de Mac OS X, también funciona bien, como lo hacen muchos editores de texto en Windows. Linux, también tiene su parte de editores capaces. Algunos editores hacen un mejor trabajo mostrando el código Rails usando edición de sintáxis y destacado de código con color, haciendo que el código se vea bastante bien. Otros editores no reconocen código de Ruby on Rails del todo. Abajo se muestra un ejemplo de código siendo editado en TextMate:</p>
<p><img alt="Sintáxis de Rails en TextMate" src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/06/syntax.png" /><br/><em>Ejemplo de sintáxis de Ruby on Rails</em></p>
<p>Bonito, eh?</p>
<p>Textmate (y BBEdit) tienen la ventaja de ser capaces de abrir y mostrar proyectos enteros en su entorno, permitiendote localizar y editar un archivo rápidamente.</p>
<p>(<em>N.T. <a href="http://www.netbeans.org/" target="_blank" rel="nofollow">Netbeans 6+</a> también es una buena opción para editar proyectos Rails en cualquier plataforma</em>)</p>
<h3>Todo en el lugar correcto</h3>
<p>Los proyectos Rails están hechos de montones y montones de capretas y archivos -la mayoría de los cuales Rails genera durante la creación inicial de la aplicación. Si estás acostumbrado a tratar con proyectos más pequeños, esto puede al principio parecer algo como una cantidad intimidante de contenido.</p>
<p>Usar carpetas de esta manera hace más fácil el separar los modelos, controladores, y vistas. Y justo todo lo que los no-desarrolladores necesitarán conocer estará en el mismo lugar en cada proyecto Rails -lejos del profundo código que pertenece a la capa de lógica de negocios. Veamos los archivos y carpetas que Rails creó.</p>
<p><img alt="Estructura de Rails" src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/06/demo1.png" /><br/><em>Ejemplo de la estructura de carpetas por defecto de Rails</em></p>
<p>Estos archivos y carpetas serán muy parecidos no importa con qué aplicación Rails estés trabajando. Incluso aplicaciones Rails muy largas y complicadas tendrán esta estructura idéntica. Y aún mejor, tus archivos y la lógica de presentación irán siempre en el mismo lugar.</p>
<p>De hecho es seguro para tí ignorar la mayoría de lo que ves aquí por ahora. Las carpetas a las que debes poner atención son <tt>app/views</tt>, <tt>app/views/layouts</tt>, <tt>public/images</tt>, y <tt>public/stylesheets</tt>, señaladas abajo.</p>
<p><img alt="Carpetas importantes" src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/06/demo3.png" /><br/><em>Carpetas importantes</em></p>
<h3>Insertando código Rails en HTML</h3>
<p>Típicamente, cuando trabajas con desarrolladores Rails, tú crearás un diseño y ellos insertarán el código Rails en él. Pero en ocasiones, se trabajará de la otra forma -los desarrolladores Rails tendrán ya los archivos básicos y tú necesitarás &#8220;diseñar alrededor&#8221; de su código.</p>
<p>Si estás familiarizado con la forma en la que las plantillas trabajan en software de blogging como Movable Type o WordPress, entonces también te será familiar la forma en la que las <em>layouts</em> y vistas trabajan en Rails. Rails permite a los desarrolladores separar la funcionalidad de una aplicación dentro de grupos de vistas relacionados. Si estamos desarrollando diferentes maneras para crear, editar, y desplegar un artículo de una revista web, Rails querrá que pongamos estas vistas dentro de una carpeta llamada <tt>articles</tt> en la carpeta <tt>app/views</tt>.</p>
<p>Las plantillas que contienen el HTML que los usarios realmente verán no terminan en <tt>.html</tt> como los archivos HTML normales. En cambio, estas tienen tienen extensiones de archivo especiales: <tt>.html.erb</tt>. La adición de <tt>.erb</tt> le dice a Rails que estos archivos contienen código Ruby insertando, y usarán tecnología de plantillas de Ruby. Esta tecnología permite a desarrolladores Rails insertar código Ruby on Rails justo dentro de cualquier plantilla muy fácilmente. Echa un vistazo al archivo <tt>app/views/articles/edit.html.erb</tt>:</p>
<p><img alt="Código Ruby insertado en HTML" src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/06/demo4.png" /><br/><em>Ejemplo de código Ruby insertado dentro de una plantilla HTML.</em></p>
<p>Puedes notar etiquetas (tags) que normalmente no verías en un archivo HTML. Estas etiquetas especiales le dicen a Rails dónde está el código insertado. Cuando Rails las ve, ejecuta el código dentro ellas y muestra el resultado justo en el navegador del usuario como va haciendo la página.</p>
<p>Las etiquetas <tt>&lt;%=</tt> y <tt>&lt;%</tt> indican el inicio del código Rails o Ruby, mientras que la etiqueta <tt>%&gt;</tt> indica el cierre de ambas etiquetas. Como un no-programador, es seguro poner tu HTML alrededor y dentro de estas etiquetas, pero ten cuidado con mantener lo que hay en el interior de las etiquetas intacto. Sin embargo, puedes mover este bloque de código a donde quieras dentro de tu HTML, o editar el HTML dentro y alrededor de este bloque como se necesite. Por ejemploi, podrías cambiar el fragmento de arriba para que luzca como el ejemplo de abajo sin afectar nada del código Rails:</p>
<p><img alt="Fragmento HTML diferente dentro de las mismas etiquetas" src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/06/demo5.png" /><br/><em>Rails es versátil: puede ser movido dentro y fuera del HTML existente con poco esfuerzo.</em></p>
<p>Pudiste haber cambiado completamente cómo se muestra la página, pero la funcionalidad permanece intacta.</p>
<p>En Rails, hay una plantilla primaria -un archivo usualmente encontrado en <tt>app/views/layouts/application.html.erb</tt>. Este archivo contiene la &#8220;envoltura&#8221; del XHTML que rodea el contenido que la aplicación despliega a los usuarios. Si abres este archivo ahora, verás exactamente de lo que estoy hablando.</p>
<p>En muchos sistemas de blogging, los diseñadores acostumbran &#8220;cortar&#8221; sus diseños -separando cosas como el encabezado, pie de página, y lateral dentro de diferentes archivos. Aunque Rails soporta esto, el patrón usual es poner estos elementos justo dentro del archivo <tt>application.html.erb</tt> y usar Rails para colocar el contenido en su lugar.</p>
<p>Si quisieras personalizar el diseño de un sitio Rails, este es el lugar donde deberías empezar. Y eres libre de personalizar todo lo que quieras -sólo mantén un ojo en la línea que luce asi:</p>
<pre name="code" class="ruby">&lt;%= yield %&gt;</pre>
<p>Este es el trozo especial de Rails que dice &#8220;pon el contenido para esta página aquí.&#8221; La ubicación de esta única línea determina en dónde aparece el contenido principal de cada página.</p>
<p>Los desarrolladores Rails tienen técnicas para variar el contenido que aparece en diferentes áreas de la plantilla principal, como el título de una página, diferentes hojas de estilo para incluir, o contenido variable de la barra lateral.</p>
<p>Si recordamos la discusión sobre Modelo/Vista/Controlador de arriba, recordarás que nuestra principal atención se centrará en el trabajo con las vistas. Cada área general de funcionalidad de una aplicación Rails tendrá su propia carpeta en la carpeta de las vistas (app/views). Por ejemplo, si estubieramos trabajando en los diseños para una revista web como la que estás leyendo ahora (<a href="http://alistapart.com/articles/gettingstartedwithrubyonrails" target="_blank" rel="nofollow">artículo original</a>), habría vistas especiales dedicadas a mostrar artículos, y esas vistas siempre vivirán en la carpeta <tt>app/views/articles</tt>.</p>
<p>Es cierto que no todas las aplicaciones Rails tendrán artículos, pero Rails especifica que cada área del sitio web -artículos, comentarios, temas, facturas, etc.- tendrá su propia carpeta en el directorio de las vistas. Es parte del patrón de Rails.</p>
<h3>La carpeta pública (public)</h3>
<p>A diferencia del resto de los archivos en una aplicación Rails, todo lo que se encuentra en el folder <tt>public</tt> es visible al mundo externo. En la carpeta public hay dos folders a los que querrás poner especial atención: <tt>images</tt> y <tt>stylesheets</tt>. Aunque no hay reglas estrictas que digan que tus imágenes y hojas de estilo <em>deben</em> vivir en estas ubicaciones, colocándolas ahí es una bendición para los desarrolladores Rails, para que puedan fácilmente llamarlas desde el código como sea necesario.</p>
<h4>Control de código</h4>
<p>Cualquiera que cree archivos que cambian con el tiempo necesitará probablemente, en algún punto, ayuda para mantener seguimiento de cómo cambian los archivos, y naturalmente querrá tener un respaldo de esos cambios. Esto es aún más importante cuando estás compartiendo el proyecto y archivos de código con otras personas quienes harán cambios también.</p>
<p>Afortunadamente hay un software especial, usualmente referido como control de código o sistema de control de versiones, para ayudarnos a gestionar este proceso. El sistema más comúnmente usado con proyectos Rails es llamado <a href="http://subversion.tigris.org/" target="_blank" rel="nofollow">Subversion</a> (también conocido como SVN). Subversion es una solución de código abierto gratuita, disponible para la mayoría de las plataformas. Este recuerda cada cambio que se ha hecho a los archivos y directorios en tus proyectos. Esto te permite recuperar versiones anteriores de tu información, o examinar la historia de cómo ha cambiado la misma.</p>
<p>Los sistemas de control de código reemplazan el método &#8220;cambia un archivo y súbelo al servidor con FTP&#8221; para actualizar archivos -creando en cambio una forma consistente de hacer tus cambios disponibles a todos en tu equipo simultáneamente, y mantener todo actualizado e integrado en un paso.</p>
<p><a href="http://git.or.cz/" target="_blank" rel="nofollow">Git</a>, un sistema de control de código alternativo, ha ganado popularidad recientemente, tanto que el Rails Core Team está actualmente usándolo para administrar el código de Rails mismo.</p>
<p>Aunque el proceso y comandos que usarás para administrar los cambios que haces varían entre diferentes sistemas de control de código, el concepto es similar sin importar la tecnología que se use. Y aunque pueda parecer un tanto difícil de entender, una vez que lo empieces a utilizar los beneficios de usar un sistema de control de código para administrar un proyecto Rails fácilmente superan la curva de aprendizaje.</p>
<p>Las instrucciones para administrar proyectos usando Subversion y Git están fuera del alcance de este artículo y a menudo varían en base al sistema usado así como al equipo que lo usa. Pero es importante saber que probablemente será necesario que uses este tipo de sistema, y que eso involucrará escribir comandos en la línea de comandos o usar una nueva aplicación de control de código para hacer el tipo de cosas que solías hacer sin cualquier complicación adicional.</p>
<h3>Siguientes pasos</h3>
<p>Si estás interesado en aprender más acerca de Ruby on Rails, hay muchos lugares para empezar. Una excelente forma de aprender Rails es observando algunos de los excelentes <a href="http://www.rubyonrails.org/screencasts" target="_blank">screencasts de Rails</a>.</p>
<p>También hay un montón de buena documentación disponible, con algunos puntos de partida en la <a href="http://www.rubyonrails.org/docs" target="_blank" rel="nofollow">página de documentación de Ruby on Rails</a>.</p>
<p>Puedes aprender todo lo que siempre quiciste saber sobre Subversion y gestión de control de código leyendo la versión (gratuita) de <a href="http://svnbook.red-bean.com/" target="_blank">Version Control with Subversion</a>.</p>
<p>Además hay muchos, muchos maravillosos blogs, podcasts, artículos, tutoriales, y screencasts disponibles en línea que se centran en aprender Rails. Sólo checa <a href="http://www.google.com/search?q=learning+ruby+on+rails" target="_blank">esta lista en Google</a> si quieres un buen lugar para empezar.</p>
<h3>Conclusión</h3>
<p>Espero que esta suave introducción a Rails responda algunas preguntas y tal vez disipe unos cuantos de los mitos alrededor de Rails. Y aunque Rails es una gran plataforma, aún necesita más gente como tú -diseñadores, arquitectos de interfaz, y escritores- para ayudar a guiar y dirigir su futuro. Es una plataforma lo suficientemente joven para que gente con tu experiencia pueda realmente determinar en lo que se transforma ahora y en los próximos años.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mexicoonrails.com.mx/2008/05/12/empezando-con-ruby-on-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Conociendo a Ruby</title>
		<link>http://blog.mexicoonrails.com.mx/2008/04/12/conociendo-a-ruby/</link>
		<comments>http://blog.mexicoonrails.com.mx/2008/04/12/conociendo-a-ruby/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 07:01:51 +0000</pubDate>
		<dc:creator>edgar js</dc:creator>
		
		<category><![CDATA[Primeros pasos]]></category>

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

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

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

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

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

		<guid isPermaLink="false">http://blog.mexicoonrails.com.mx/?p=15</guid>
		<description><![CDATA[Ruby es un lenguaje puramente orientado a objetos. Para los que no conozcan sobre programaci&#243;n orientada a objetos (POO), tal vez deber&#237;an leer un poco m&#225;s al respecto. Sin embargo, a&#250;n sabiendo las caracter&#237;sticas de la POO a veces se puede dificultar un poco familiarizarse con ruby, digamos que es t&#225;n f&#225;cil que se dificulta [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby es un lenguaje puramente orientado a objetos. Para los que no conozcan sobre programaci&oacute;n orientada a objetos (POO), tal vez deber&iacute;an leer un poco m&aacute;s al respecto. Sin embargo, a&uacute;n sabiendo las caracter&iacute;sticas de la POO a veces se puede dificultar un poco familiarizarse con ruby, digamos que es t&aacute;n f&aacute;cil que se dificulta (principalmente para los que vienen de lenguajes como C#, Java o PHP).</p>
<p>En el siguiente art&iacute;culo se explicar&aacute;n algunas de las caracter&iacute;sticas <em>nuevas</em> que se puedan presentar al programar en ruby por primera vez.</p>
<p>Ruby es un <a href="http://es.wikipedia.org/wiki/Lenguaje_interpretado" target="_blank" rel="nofollow">lenguaje interpretado</a>, es decir que no se necesita compilar antes de ser ejecutado. Todo el c&oacute;digo se valida en tiempo de ejecuci&oacute;n.</p>
<p>Para correr los ejemplos que se encuentran en este art&iacute;culo (y en todos los que sean espec&iacute;ficos de ruby) puedes hacerlo de dos formas:</p>
<ol>
<li>IRB (<em>Interactive Ruby</em>). Es la manera m&aacute;s f&aacute;cil de jugar con ruby, una vez instalado en tu computadora simplemente ejecuta &#8216;irb&#8217; (en s&iacute;mbolo del sistema o terminal). Ahora puedes escribir expresiones ruby como si fuera un documento normal, s&oacute;lo que cada sentencia/bloque se ejecutar&aacute; al momento. Por ejemplo:
<pre>
irb(main):001:0&gt; class Hello
irb(main):002:1&gt; def say
irb(main):003:2&gt; puts &quot;hola mundo&quot;
irb(main):004:2&gt; end
irb(main):005:1&gt; end
=&gt; nil
irb(main):006:0&gt; Mundo.new.say
=&gt; hola mundo
=&gt; nil
irb(main):007:0&gt; puts &quot;hey, esto es muy sencillo!&quot;
hey, esto es muy sencillo!
=&gt; nil
irb(main):008:0&gt; 2 + 5
=&gt; 7
</pre>
</li>
<li>Scripts. Puedes copiar el c&oacute;digo directamente en un archivo con extensi&oacute;n <tt>.rb</tt> y luego simplemente ejecutarlo con <tt>ruby mi_script.rb</tt></li>
</ol>
<p>Se recomienda la opci&oacute;n del IRB para mayor f&aacute;cilidad.</p>
<p><span id="more-15"></span></p>
<h3>Clases</h3>
<p>Las clases en ruby son casi como cualquier clase en otros lenguajes: agrupan funcionalidades, encapsulan l&oacute;gica, etc, etc, etc&#8230; Sin embargo una cualidad en ruby es que las clases <strong>nunca se cierran</strong>, puedes reabrir una clase para modificarla y &eacute;sta mantendr&aacute; las definiciones anteriores.</p>
<pre name="code" class="ruby">
class Mundo
  def hola
    puts &quot;hola mundo&quot;
  end
end

mi_mundo = Mundo.new
mi_mundo.hola # =&gt; &quot;hola mundo&quot;

class Mundo
  def adios
    puts &quot;adios mundo&quot;
  end
end

mi_mundo.adios # =&gt; &quot;adios mundo&quot;</pre>
<p>Como se ve en el ejemplo anterior, un objeto se crea llamando al m&eacute;todo <tt>new</tt> de la clase, el cual a su vez llama al m&eacute;todo <tt>initialize</tt> si se encuentra para inicializar variables. <em>Initialize</em> es como un constructor para la clase.</p>
<pre name="code" class="ruby">
class Person
  def initialize(name, age)
    @name = name
    @age = age
  end

  def name
    @name
  end
end

p = Person.new(&quot;Edgar&quot;, 20)
p.name # =&gt; &quot;Edgar&quot;</pre>
<p>Esos identificadores con arrobas son variables de instancia. Para no entrar mucho en detalle, las variables de instancia est&aacute;n disponibles para toda la clase por eso en el m&eacute;todo &#8216;name&#8217; se regresa el valor que se le hab&iacute;a asignado en el m&eacute;todo &#8216;initialize&#8217;. Estas variable juegan un papel importante en rails ya que est&aacute;n disponibles tambi&eacute;n en el &aacute;mbito de las vistas. Por ejemplo, si en un controlador declaramos una variable de instancia, &eacute;sta estar&aacute; mantendr&aacute; su valor en la respectiva vista. M&aacute;s adelante ya se entendr&aacute; mejor.</p>
<h3>S&iacute;mbolos</h3>
<p>Los s&iacute;mbolos no tienen una definici&oacute;n conscisa, pero podemos decir que son representaciones de cadenas. Los s&iacute;mbolos empiezan con dos puntos <tt>:simbolo</tt>, los cuales pueden ayudar a definir lo que es un s&iacute;mbolo: si decimo que los dos puntos significa &quot;la cosa llamada&#8230;&quot; entonces ser&iacute;a m&aacute;s f&aacute;cil entender lo que son los s&iacute;mbolos. Por ejemplo <tt>:name</tt> ser&iacute;a algo como &quot;la cosa llamada&#8230; name&quot;.</p>
<p>La raz&oacute;n de ser de los s&iacute;mbolos es principalmente disminuir la duplicaci&oacute;n. Podemos usarlos como cadenas por lo que si repites una cadena muchas veces en tu aplicaci&oacute;n ser&iacute;a mejor utilizar s&iacute;mbolos.</p>
<p>C&oacute;mo los s&iacute;mbolos no pertenecen <em>oficialmente</em> a un tipo (en realidad s&iacute;, son objetos de la clase Symbol pero no nos haremos bolas), suelen usarse como llaves para los hashes&#8230; ah! y qu&eacute; son los hashes?</p>
<h3>Hashes</h3>
<p>Los hashes (o diccionarios) son contenedores m&aacute;s o menos como los arrays, pero en vez de estar indexados por &iacute;ndices num&eacute;ricos, se componen de un valor con su respectiva llave (de cualquier tipo). Podr&iacute;an entenderse un tanto como listas.</p>
<pre name="code" class="ruby">
mi_hash = {:name =&gt; &quot;Edgar&quot;, :age =&gt; 20}
mi_hash[:name] # =&gt; &quot;Edgar&quot;
mi_hash[&quot;country&quot;] = &quot;mx&quot;
mi_hash[10] = &quot;diez&quot;
mi_hash #=&gt; {&quot;country&quot; =&gt; &quot;mx&quot;, :name =&gt; &quot;Edgar&quot;, :age =&gt; 20, 10 =&gt; &quot;diez&quot;}

un_array = ['uno', 'dos', 3]
un_array[0] # =&gt; &quot;uno&quot;
</pre>
<h3>Bloques</h3>
<p>Los bloques son un tema muy extenso, sin embargo este art&iacute;culo es s&oacute;lo una introducci&oacute;n a lo <em>nuevo</em> por lo que s&oacute;lo se abordar&aacute;n los aspectos m&aacute;s relevantes.</p>
<p>Un bloque es&#8230; un iterador.</p>
<pre name="code" class="ruby">
3.times { |i| puts i } # =&gt; 0 1 2

['uno', 'dos', 'tres'].each do |i|
  puts i
end # =&gt; uno dos tres</pre>
<p>Un bloque lo que hace es iterar cada uno de sus elementos y ejecutar el c&oacute;digo declarado para cada uno.</p>
<pre name="code" class="ruby">
def tres_veces
  yield
  yield
  yield
end

tres_veces do
  puts 'hey '
end # =&gt; hey hey hey

def dos_o_nada
  if block_given?
    yield
    yield
  else
    'nada'
  end
end

dos_o_nada # =&gt; 'nada'

dos_o_nada { puts 'algo ' } # =&gt; algo algo</pre>
<p><tt>yield</tt> &quot;embebe&quot; (podr&iacute;a verse de esa forma para entenderse mejor) el c&oacute;digo que se pasa como par&aacute;metro.</p>
<p>Como dije, el tema de los bloques es extenso y no lo explicar&eacute; esta vez (m&aacute;s adelante en un post dedicado s&oacute;lo a bloques)&#8230; pero les dejo algo para pensar un rato <img src='http://blog.mexicoonrails.com.mx/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre name="code" class="ruby">
class Bloques
  def guardar_accion(&#038;block)
    @b = block
  end

  def hacer_accion
    @b.call
  end
end

b = Bloques.new
b.guardar_accion { puts 'O_o' }
b.hacer_accion # =&gt; O_o</pre>
<p>Hasta aqu&iacute; la primera parte de Conociendo a Ruby. Espero que esto sea de ayuda para quienes apenas comienzan. Y para los que ya tienen algo de experiencia no se desesperen, pronto llegaremos a temas m&aacute;s avanzados e interesantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mexicoonrails.com.mx/2008/04/12/conociendo-a-ruby/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Passenger (mod_rails para Apache) liberado</title>
		<link>http://blog.mexicoonrails.com.mx/2008/04/11/passenger-mod_rails-para-apache-liberado/</link>
		<comments>http://blog.mexicoonrails.com.mx/2008/04/11/passenger-mod_rails-para-apache-liberado/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 21:17:54 +0000</pubDate>
		<dc:creator>edgar js</dc:creator>
		
		<category><![CDATA[+1 Rails]]></category>

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

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

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

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

		<guid isPermaLink="false">http://blog.mexicoonrails.com.mx/?p=14</guid>
		<description><![CDATA[Esta es una noticia que cambiar&#225; el mundo de rails de una manera dram&#225;tica. El d&#237;a de hoy ser&#225; recordado por los desarrolladores rails  
Para los que ya son iniciados en Rails y han experimentado la tediosa tarea de poner una aplicaci&#243;n en producci&#243;n (deployment) esto les fascinar&#225;.
Los chicos de Phusion han desarrollado un [...]]]></description>
			<content:encoded><![CDATA[<p>Esta es una noticia que cambiar&aacute; el mundo de rails de una manera dram&aacute;tica. El d&iacute;a de hoy ser&aacute; recordado por los desarrolladores rails <img src='http://blog.mexicoonrails.com.mx/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Para los que ya son iniciados en Rails y han experimentado la tediosa tarea de poner una aplicaci&oacute;n en producci&oacute;n (<em>deployment</em>) esto les fascinar&aacute;.</p>
<p>Los chicos de Phusion han desarrollado un <a href="http://www.modrails.com" target="_blank">mod_rails para Apache</a>. Pero &iquest;qu&eacute; es esto?&#8230; se preguntar&aacute;n algunos. Bueno pues como coment&eacute; en el p&aacute;rrafo anterior, hasta hoy la tarea de poner una aplicaci&oacute;n rails en producci&oacute;n (es decir el proceso de configurar el servidor para que la aplicaci&oacute;n pueda correr en su versi&oacute;n final) hab&iacute;a sido un tanto <em>anti-rails</em> (podr&iacute;a decirse que era la parte m&aacute;s dif&iacute;cil de hacer una aplicaci&oacute;n). Pero ahora gracias a este mod_rails, hacer un deployment será tan f&aacute;cil como con PHP. Copias tus archivos a un directorio y listo.</p>
<p>Esto tambi&eacute;n significa que encontrar un hosting con soporte para rails ser&aacute; much&iacute;simo m&aacute;s f&aacute;cil y con mayor performance. En verdad, ya hac&iacute;a falta algo como esto!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mexicoonrails.com.mx/2008/04/11/passenger-mod_rails-para-apache-liberado/feed/</wfw:commentRss>
		</item>
		<item>
		<title>¿Quién usa Rails?</title>
		<link>http://blog.mexicoonrails.com.mx/2008/04/11/quien-usa-rails/</link>
		<comments>http://blog.mexicoonrails.com.mx/2008/04/11/quien-usa-rails/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 11:01:08 +0000</pubDate>
		<dc:creator>edgar js</dc:creator>
		
		<category><![CDATA[+1 Rails]]></category>

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

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

		<category><![CDATA[producción]]></category>

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

		<guid isPermaLink="false">http://blog.mexicoonrails.com.mx/?p=11</guid>
		<description><![CDATA[Muchas de las personas a las que les hablo de Ruby on Rails me dicen &#8220;bueno.. y quién lo usa?&#8221;, aunque en realidad se refieren a &#8220;¿qué empresas (de renombre) lo usan?&#8221;. Supongo que la pregunta va a enfocada para ver si en realidad ror es una opción viable o no.
Bueno pues, he aquí unas [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas de las personas a las que les hablo de Ruby on Rails me dicen <em>&#8220;bueno.. y quién lo usa?&#8221;</em>, aunque en realidad se refieren a <em>&#8220;¿qué empresas (de renombre) lo usan?&#8221;</em>. Supongo que la pregunta va a enfocada para ver si en realidad ror es una opción viable o no.</p>
<p>Bueno pues, he aquí unas cuantas compañías que están utilizando rails.</p>
<p style="text-align:center">
<img src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/04/quien_usa_rails.gif" alt="Quién usa rails" />
</p>
<p>Algunas son muy conocidas, otras no&#8230; pero el hecho de que se utilice rails para una solución empresarial ya es un gran punto a favor.</p>
<p>Así que ya saben, hay que saber apreciar lo bueno y no descartarlo a la primera sin siquiera haberlo probado antes.</p>
<p>Para más información sobre grandes empresas que usan ror:</p>
<ul>
<li><a href="http://www.workingwithrails.com/high-profile-organisations" target="_blank" rel="nofollow">http://www.workingwithrails.com/high-profile-organisations</a></li>
<li><a href="http://blog.obiefernandez.com/content/2008/03/big-name-compan.html" target="_blank" rel="nofollow">http://blog.obiefernandez.com/content/2008/03/big-name-compan.html</a></li>
<li><a href="http://rails100.pbwiki.com" target="_blank" rel="nofollow">http://rails100.pbwiki.com</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mexicoonrails.com.mx/2008/04/11/quien-usa-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Entendiendo el flujo de una aplicación rails</title>
		<link>http://blog.mexicoonrails.com.mx/2008/04/10/entendiendo-el-flujo-de-una-aplicacion-rails/</link>
		<comments>http://blog.mexicoonrails.com.mx/2008/04/10/entendiendo-el-flujo-de-una-aplicacion-rails/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 19:01:45 +0000</pubDate>
		<dc:creator>edgar js</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.mexicoonrails.com.mx/?p=6</guid>
		<description><![CDATA[Nota: No tengo nada en contra del idioma espa&#241;ol, pero personalmente creo que para la programaci&#243;n la mejor opci&#243;n es el ingl&#233;s. Y m&#225;s a&#250;n programando en ruby ya que gracias a sus sint&#225;xis tan flu&#237;da es como si estuvieramos armando sentencias. Por esto, a&#250;n siendo este blog en espa&#241;ol se escribir&#225;n los ejemplos en [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><small>Nota: No tengo nada en contra del idioma espa&ntilde;ol, pero personalmente creo que para la programaci&oacute;n la mejor opci&oacute;n es el ingl&eacute;s. Y m&aacute;s a&uacute;n programando en ruby ya que gracias a sus sint&aacute;xis tan flu&iacute;da es como si estuvieramos armando sentencias. Por esto, a&uacute;n siendo este blog en espa&ntilde;ol se escribir&aacute;n los ejemplos en ingl&eacute;s. Si tienes problemas con el idioma siempre puedes preguntar por los significados.</small></p></blockquote>
<p>Rails sigue el patr&oacute;n Modelo-Vista-Controlador (MVC), que es una estructura de software en la que se separa la aplicaci&oacute;n en tres partes fundamentales para su mejor organizaci&oacute;n y manejo.</p>
<p><span id="more-6"></span></p>
<h3>Modelo</h3>
<p>Se encarga de la l&oacute;gica de datos, no tiene porqu&eacute; tener interacci&oacute;n con el usuario. En rails es gestionado por <strong>ActiveRecord</strong>, el cual <em>mapea</em> la base de datos a objetos en la aplicaci&oacute;n.</p>
<p>Para ejemplificar un poco, supongamos que tenemos una clase <tt>User</tt> de ActiveRecord por lo que existir&aacute; una tabla <tt>users</tt>&sup1; en la base de datos. Eso significa que cada fila en la tabla se convertir&aacute; en un objeto para la aplicaci&oacute;n, y las columnas ser&aacute;n entonces los atributos del objeto.</p>
<p style="text-align:center">
<img src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/04/mapeo_activerecord.gif" alt="Mapeo ActiveRecord" />
</p>
<p>Los modelos se encuentran en el directorio <tt>app/models</tt> y el nombre los archivos es en singular (<tt>user.rb</tt>).</p>
<h3>Controlador</h3>
<p>Es el <em>puente</em> entre el modelo y la vista. Se encarga de procesar las peticiones y las respuestas. En rails es gestionado por <strong>ActionController</strong>.</p>
<p>Las URLs se mapean a su correspondiente acci&oacute;n en el controlador. Los m&eacute;todos en el controlador se conocen como <em>acciones</em>.</p>
<p style="text-align:center">
<img src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/04/mapeo_actioncontroller.gif" alt="Mapeo ActionController" />
</p>
<p>Los modelos se encuentran en el directorio <tt>app/controllers</tt> y el nombre de los archivos es en plural + <em>_controller</em> (<tt>users_controller.rb</tt>).</p>
<h3>Vista</h3>
<p>Se encarga del <em>render</em> de la p&aacute;gina final. Muestra la parte visual de la aplicaci&oacute;n para el usuario. Cada acci&oacute;n en el controlador corresponde a una vista. En rails es gestionado por <strong>ActionView</strong>.</p>
<p style="text-align:center">
<img src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/04/mapeo_actionview.gif" alt="Mapeo ActionView" />
</p>
<p>Las vistas se encuentran en el directorio <tt>app/views</tt> bajo el subdirectorio correspondiente al controlador. Los archivos se nombran de manera especial seg&uacute;n el contenido y el render, pero generalmente es de la forma <tt>show.html.erb</tt> (La acci&oacute;n es <em>show</em>, el tipo es <em>html</em> y el render es por <em><a href="http://en.wikipedia.org/wiki/ERuby" rel="nofollow">erb</a></em>.</p>
<p>Entonces, el flujo de una aplicaci&oacute;n rails ser&iacute;a de la siguiente manera:</p>
<p style="text-align:center">
<img src="http://blog.mexicoonrails.com.mx/wp-content/uploads/2008/04/flujo_mvc.gif" alt="Flujo MVV" />
</p>
<p>&sup1;<small>Siguiendo la convenci&oacute;n de rails, el modelo se nombra en singular mientras la tabla correspondiente debe ser nombrada en plural. Rails es inteligente por lo que si creamos un modelo <em>Person</em> usar&aacute; la tabla <em>people</em>.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mexicoonrails.com.mx/2008/04/10/entendiendo-el-flujo-de-una-aplicacion-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Instalar rails en windows y ubuntu</title>
		<link>http://blog.mexicoonrails.com.mx/2008/04/10/instalar-rails-en-windows-y-ubuntu/</link>
		<comments>http://blog.mexicoonrails.com.mx/2008/04/10/instalar-rails-en-windows-y-ubuntu/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 18:39:19 +0000</pubDate>
		<dc:creator>edgar js</dc:creator>
		
		<category><![CDATA[Guías]]></category>

		<category><![CDATA[Primeros pasos]]></category>

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

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

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

		<guid isPermaLink="false">http://blog.mexicoonrails.com.mx/?p=5</guid>
		<description><![CDATA[Windows
Instalar rails en windows es realmente f&#225;cil. Primero debemos descargar ruby. Este instalador incluye rubygems, por lo que una vez instalado bastar&#237;a con hacer lo siguiente en el s&#237;mbolo del sistema (cada l&#237;nea es un comando):

gem update --system
gem install rails
gem install mongrel_service

Y listo.
Ubuntu
En slicehost hay una excelente gu&#237;a para instalar mysql y ror en ubuntu. [...]]]></description>
			<content:encoded><![CDATA[<h3>Windows</h3>
<p>Instalar rails en windows es realmente f&aacute;cil. Primero debemos <a href="http://rubyforge.org/frs/?group_id=167" rel="nofollow" target="_blank">descargar ruby</a>. Este instalador incluye rubygems, por lo que una vez instalado bastar&iacute;a con hacer lo siguiente en el s&iacute;mbolo del sistema (cada l&iacute;nea es un comando):</p>
<pre>
gem update --system
gem install rails
gem install mongrel_service
</pre>
<p>Y listo.</p>
<h3>Ubuntu</h3>
<p>En slicehost hay una <a href="http://articles.slicehost.com/2007/11/23/ubuntu-gutsy-mysql-and-ror" target="_blank">excelente gu&iacute;a para instalar mysql y ror en ubuntu</a>. Est&aacute; en ingl&eacute;s as&iacute; que si tienes alg&uacute;n problema con el idioma h&aacute;znoslo saber para ayudarte un poco m&aacute;s.</p>
<p><span id="more-5"></span></p>
<h3>Acerca de RubyGems</h3>
<p>RubyGems es el gestor de paquetes por excelencia para ruby. Un paquete en ruby se conoce con el nombre de <em>gem (gema)</em> y se instala tan f&aacute;cil como <tt>gem install nombre_de_la_gema</tt>.</p>
<p>Tambi&eacute;n es muy f&aacute;cil crear y distribuir tus propias gemas, pero eso ya lo veremos m&aacute;s adelante.</p>
<h3>Creando tu aplicaci&oacute;n</h3>
<p>Una vez que tenemos instalado y configurador ruby on rails en nuestra m&aacute;quina, es hora de comenzar a divertirse.</p>
<p>Para crear el esquema necesario de una aplicaci&oacute;n podemos utilizar el comando <tt>rails nombre_de_la_app</tt>, para ver las opciones disponibles utiliza el par&aacute;metro <tt>rails &#8211;help</tt>.</p>
<p>Si ejecutamos <tt>rails myapp</tt> se crear&aacute; la siguiente estructura:</p>
<pre>
myapp
+---app
|   +---controllers
|   +---helpers
|   +---models
|   \---views
|       \---layouts
+---config
|   +---environments
|   \---initializers
+---db
+---doc
+---lib
|   \---tasks
+---log
+---public
|   +---images
|   +---javascripts
|   \---stylesheets
+---script
|   +---performance
|   \---process
+---test
|   +---fixtures
|   +---functional
|   +---integration
|   +---mocks
|   |   +---development
|   |   \---test
|   \---unit
+---tmp
|   +---cache
|   +---pids
|   +---sessions
|   \---sockets
\---vendor
    \---plugins
</pre>
<p>Con el tiempo nos acostumbraremos a los directorios y qu&eacute; hay en cada uno. Por el momento basta con saber que el coraz&oacute;n de la aplicaci&oacute;n est&aacute; en el directorio <em>app</em>.</p>
<p>En los siguientes posts empezaremos a familiarizarnos con la forma de trabajar en rails y crearemos nuestras primeras aplicaciones.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mexicoonrails.com.mx/2008/04/10/instalar-rails-en-windows-y-ubuntu/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.588 seconds -->
