Desde que tuve conocimiento de la revolución en el diseño de aplicaciones web, popularmente conocido como 'Web 2.0', he sido testigo de varias tecnologias que giran alrededor de esta: sindicación de contenidos (RSS), AJAX, Tags, Web Services, etc.
Hoy en dia podemos encontrar muchas webs orientadas a la comunidad o la generación de contenido por parte de los usuarios, como por ejemplo: Technorati, Odeo, Basecamp, del.icio.us, digg, etc. Bien podemos apreciar, que muchas de estas aplicaciones web estan siendo desarrolladas bajo Ruby on Rails, pero, ¿a qué se debe esto?, ¿porqué no eligen otra plataforma?, ¿es Ruby on Rails mejor que otras plataformas?, ¿es solo una moda? Excelentes preguntas, merecen respuestas concretas, expliquemos en que consiste esto.
Ruby es un lenguaje de scripts, multiplataforma, netamente orientado a objetos y lo mejor de todo es software libre :), fue creado por Yukihiro Matsumoto familiarmente conocido como Matz, la primera versión fue liberada en el año 1995, ha heredado varias cosas de lenguajes como: Perl, Python, Smalltalk, Eiffel, Ada y Lisp.
Como indica su propio autor, es un lenguaje 'aparentemente sencillo pero internamente complejo', esto quiere decir que mientras mas 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. Ruby fue diseñado para un desarrollo rapido y sencillo.
Cada dia este lenguaje va ganando mas adeptos, tanto asi que la empresa Sun Mirosystems, esta apoyando un proyecto llamado Jruby que es un interprete de Ruby escrito 100% en Java.
Algunas carecteristicas del lenguaje son:
Muy bien, hasta aquí creo que se tiene una visión básica de lo que es Ruby.
Rails es un framework para el desarrollo de aplicaciones web, software libre por naturaleza, está basado en el patron de diseño Modelo Vista Controlador (MVC).
Fue creado por David Heinemeier Hansson, empleado de la empresa 37Signals, fue liberado por primera vez al publico en julio del 2004, y lo implementó en un aplicacion orientada a la administración de proyectos llamada Basecamp. Actualmente se unieron más personas al desarrollo de Rails podemos visualizar aquí a los integrantes.
Rails está basado en estos principios de desarrollo:
La primera regla que a mi buen entender significa 'No lo vuelvas a repetir', es una de las cosas mas 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 linea codigo, o tal vez tener una tabla en tu base de datos, y manipular a los registros como un objeto y a sus campos como un atributo, sin necesidad de declarar nada, son solo algunas aplicaciones de este principio de desarrollo.
El segundo principio nos dice 'Convencion antes que Configuración', muy bien con esto el framework nos dice: oye he notado que tu siempre usas esto de esta forma, o veo que siempre tienes que configurar esto de aqui, porque no hacemos una cosa, yo te doy todo esto configurado, si tu respetas esta configuracion te ahorraras tiempo, y sino quieres hacerlo, no hay problema no me molesto, para muestra un boton:
class Auto < ActiveRecord::Base end
Muy bien y que hago con eso, la verdad no deberiamos hacer nada pero ya hicimos mucho :), con esa declaracion de una clase, lo que hemos logrado es mapear a una tabla en nuestra base de datos, dicho de otra manera Rails buscara una tabla llamada 'autos', en nuestra base de datos,y porque en plural?, esto es asi porque Rails cree conveniente que debe llamarse asi (principio de pluralización), aunque este comportamiento se puede desactivar de una menra muy sencilla, y si no la encuentra?, pues nos dara un error.
Y que ocurre si la tabla con la que quiero trabajar no tiene ese nombre exacto?, no hay problema, con una linea mas seras complacido:
class Auto < ActiveRecord::Base set_table_name 'carros' end
Con esto el framework comprendera que en vez de usar 'autos', deberia usar 'carros' asi de sencillo.
Muy bien hasta aqui tenemos una muy pequeña noción de lo que es Ruby y Rails, ahora veamos lo necesario para tenerlo instalado en nuestra maquina.
Version FreeBSD:
Actualizando los ports portsnap fetch portsnap update Instalando Ruby cd /usr/ports/lang/ruby18 make install clean
Versión Linux:
Descargamos el fuente desde aqui.
./configure make make install
Luego instalamos el gestor de paquetes Rubygems:
descargamos desde http://rubyforge.org/frs/download.php/11289/rubygems-0.9.0.tgz , luego descomprimimos y:
cd rubygems-0.9.0 ruby setup.rb
Para usuarios de Debian o Ubuntu
sudo apt-get install ruby irb rdoc
y el mismo procedimiento para Rubygems
Versión Windows (Somos democratas ¿no?):
Descargar desde aquí, luego, doble click, next, next ... ;)
Muy bien hasta aqui ya tenemos instalado Ruby.
Si disponemos de conexion a internet el trabajo se resumen en:
gem install rails --include-dependencies
Para una instalación manual debemos descargarnos cada uno de los modulos:
Los archivos deberan ser descargados en un solo directorio y los comandos ejecutados en ese directorio, tenemos que respetar el orden de instalacion, ya que algunas gemas dependen de otras.
Muy bien hasta aqui ya debemos tener instalado Ruby y Rails satisfactoriamente, ahora creemos nuestra primera aplicacion:
Creamos un directorio de trabajo y nos ubicamos dentro de el en la consola:
rails ejemplo
Automaticamente se generara el esqueleto de nuestra aplicación.
Muy bien ahora entramos en el directorio que se genero y ejecutamos el servidor web que viene con Ruby(Webrick):
ruby script/server
Y veremos una pantalla de bienvenida a nuestra aplicacion:

Bien ahora vamos a realizar la prueba de fuego un 'Mundo Hola!', para esto realiza lo siguiente:
Creamos un controlador:
ruby script/generate controller test
Ahora se habran creado varios archivos entre ellos edita 'directorio_de_trabajo/ejemplo/app/controllers/test_controller.rb':
Vamos a agregarle un metodo
class TestController < ActionController::Base def index end end
Ahora crearemos la vista para esta accion que acabamos de crear, en 'directorio_trabajo/ejemplo/app/views/test' crea un archivo llamado 'index.rhtml' y dentro de el colocas el texto 'Mundo Hola desde RoR!', lo grabas y colocas lo siguiente en tu navegador:
http://localhost:3000/test/

Supongamos que el controlador "test" es el controlador principal de tu aplicacion, y naturalmente no seria lo ideal que los usuarios ingresen a tu pagina a traves de "http://tudominio.com/test", deberian ingresar simplemente escribiendo "tudominio.com", bien para lograr esto editemos 'directorio_trabajo/ejemplo/config/routes.rb':
descomentamos la linea> # map.connect '', :controller => "welcome" quedaria asi: map.connect '', :controller => "test":
y como nos indican unas lineas arriba en los comentarios del archivo routes.rb, debemos borrar el archivo 'directorio_trabajo/ejemplo/public/index.html', y ahora si se podria acceder a traves de 'http://localhost:3000/'
Bueno espero que esta pequeña introducción haya sido suficiente para motivar a los lectores a investigar mas sobre esta interesante plataforma de desarrollo web, y quiero tambien aprovechar la oportunidad para invitar a todos los amigos que de alguna manera estamos ligados con la tecnologia, a generar contenido en nuestro idioma, ya que creo yo es una gran barrera para el aprendizaje de muchos, creo que tambien que la tecnologia no tiene sentido si no esta al alcanze de todos.
Aqui les dejo una pequeña bibliografía:
Comments
Super-Intelligent Ruby on Rails Developer - US Company
WWe are a rapidly growing American company with extensive staff in South America and Europe. We would like to retain three or more developers immediately to staff several projects of 3+ months.
Ideally on these projects we would like to work with full-time freelancers or small firms, but we would also consider offering a full-time, permanent position to the right candidate.
At interview you should be able to show that you have ...
- 1+ yrs Ruby on Rails programming experience.
- worked on commercial projects under direction and deadlines.
- strong knowledge of Ruby on Rails and how to structure new applications.
- effective English communication skills to read, write, and talk using Skype.
- ability to work independently and effectively with attention to detail.
- ability to communicate daily live during US business hours
We will have many future projects for a person or team that does well. This is a great opportunity to get started working with an established US company.
Compensation will be based on talent and experience.
If you think you have what it takes:
Email your resume and cover letter Gianmarco at hr@avity.com