Diferencia entre revisiones de «Ruby on Rails»
m Revertidos los cambios de Rbidegain a la última edición de 190.232.164.122 |
|||
Línea 136: | Línea 136: | ||
== Enlaces externos == |
== Enlaces externos == |
||
* Sitio principal de [http://www.rubyonrails.org Ruby on Rails] en Internet. |
* Sitio principal de [http://www.rubyonrails.org Ruby on Rails] en Internet. |
||
* Página de suscripción de la [http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar Lista de Ruby y Ruby on Rails de Argentina] |
|||
[[Categoría:Software libre]] |
[[Categoría:Software libre]] |
Revisión del 00:43 19 ago 2009
Ruby on Rails | ||
---|---|---|
Captura de Rails | ||
Información general | ||
Tipo de programa | framework de aplicaciones web | |
Autor | David Heinemeier Hansson | |
Desarrollador | Rails Core Team | |
Lanzamiento inicial | 13 de diciembre de 2005 | |
Licencia | Licencia MIT | |
Información técnica | ||
Programado en | Ruby | |
Versiones | ||
Última versión estable | 2.2 ( 21 de noviembre de 2008) | |
Enlaces | ||
Ruby on Rails, también conocido como RoR o Rails es un framework de aplicaciones web de código abierto escrito en el lenguaje de programación Ruby, siguiendo el paradigma de la arquitectura Modelo Vista Controlador (MVC). Trata de combinar la simplicidad con la posibilidad de desarrollar aplicaciones del mundo real escribiendo menos código que con otros frameworks y con un mínimo de configuración. El lenguaje de programación Ruby permite la metaprogramación, de la cual Rails hace uso, lo que resulta en una sintaxis que muchos de sus usuarios encuentran muy legible. Rails se distribuye a través de RubyGems, que es el formato oficial de paquete y canal de distribución de librerías y aplicaciones Ruby.
Filosofía
Los principios fundamentales de Ruby on Rails incluyen No te repitas (del inglés Don't repeat yourself, DRY) y Convención sobre configuración.
No te repitas significa que las definiciones deberían hacerse una sola vez. Dado que Ruby on Rails es un framework de pila completa, los componentes están integrados de manera que no hace falta establecer puentes entre ellos. Por ejemplo, en ActiveRecord, las definiciones de las clases no necesitan especificar los nombres de las columnas; Ruby puede averiguarlos a partir de la propia base de datos, de forma que definirlos tanto en el código como en el programa sería redundante.
Convención sobre configuración significa que el programador sólo necesita definir aquella configuración que no es convencional. Por ejemplo, si hay una clase Historia
en el modelo, la tabla correspondiente de la base de datos es historias
, pero si la tabla no sigue la convención (por ejemplo blogposts
) debe ser especificada manualmente (set_table_name "blogposts"
). Así, cuando se diseña una aplicación partiendo de cero sin una base de datos preexistente, el seguir las convenciones de Rails significa usar menos código (aunque el comportamiento puede ser configurado si el sistema debe ser compatible con un sistema heredado anterior)
Historia
Ruby on Rails fue escrito por David Heinemeier Hansson a partir de su trabajo en Basecamp, una herramienta de gestión de proyectos, por 37signals. Fue liberado al público por primera vez en julio de 2004.[1]
- Ruby on Rails 1.0 fue publicado el 13 de diciembre de 2005.
- Ruby on Rails 1.1 fue publicado el 28 de marzo de 2006.
- Ruby on Rails 1.2 fue publicado el 18 de enero de 2007.
- Ruby on Rails 2.0 fue publicado el 7 de diciembre de 2007.[2]
- Ruby on Rails 2.1 fue publicado el 1 de junio de 2008.[3]
- Ruby on Rails 2.2 fue publicado el 21 de noviembre de 2008.
Arquitectura MVC de Rails
Las piezas de la arquitectura Modelo Vista Controlador en Ruby on Rails son las siguientes:
Modelo
En las aplicaciones web orientadas a objetos sobre bases de datos, el Modelo consiste en las clases que representan a las tablas de la base de datos.
En Ruby on Rails, las clases del Modelo son gestionadas por ActiveRecord. Por lo general, lo único que tiene que hacer el programador es heredar de la clase ActiveRecord::Base
, y el programa averiguará automáticamente qué tabla usar y qué columnas tiene.
Las definiciones de las clases también detallan las relaciones entre clases con setencias de mapeo objeto relacional. Por ejemplo, si la clase Imagen
tiene una definición has_many:comentarios
, y existe una instancia de Imagen
llamada a
, entonces a.comentarios
devolverá un array con todos los objetos Comentario
cuya columna imagen_id
(en la tabla comentarios) sea igual a a.id
.
Las rutinas de validación de datos (p.e. validates_uniqueness_of:checksum
) y las rutinas relacionadas con la actualización (p.e. after_destroy:borrar_archivo
, before_update:actualizar_detalles
) también se especifican e implementan en la clase del modelo.
El modelo representa:
Las Tablas de la Base de Datos. Migraciones (Expresan Cambios en las BD) Observadores
Vista
En MVC, Vista es la lógica de visualización, o cómo se muestran los datos de las clases del Controlador. Con frecuencia en las aplicaciones web la vista consiste en una cantidad mínima de código incluido en HTML.
Existen en la actualidad muchas maneras de gestionar las vistas. El método que se emplea en Rails por defecto es usar Ruby Embebido (archivos.rhtml, desde la versión 2.x en adelante de RoR archivos.html.erb), que son básicamente fragmentos de código HTML con algo de código en Ruby, siguiendo una sintaxis similar a JSP. También pueden construirse vistas en HTML y XML con Builder o usando el sistema de plantillas Liquid.
Es necesario escribir un pequeño fragmento de código en HTML para cada método del controlador que necesita mostrar información al usuario. El "maquetado" o distribución de los elementos de la página se describe separadamente de la acción del controlador y los fragmentos pueden invocarse unos a otros.
Controlador
En MVC, las clases del Controlador responden a la interacción del usuario e invocan a la lógica de la aplicación, que a su vez manipula los datos de las clases del Modelo y muestra los resultados usando las Vistas. En las aplicaciones web basadas en MVC, los métodos del controlador son invocados por el usuario usando el navegador web.
La implementación del Controlador es manejada por el ActionPack de Rails, que contiene la clase ApplicationController
. Una aplicación Rails simplemente hereda de esta clase y define las acciones necesarias como métodos, que pueden ser invocados desde la web, por lo general en la forma http://aplicacion/ejemplo/metodo
, que invoca a EjemploController#metodo
, y presenta los datos usando el archivo de plantilla /app/views/ejemplo/metodo.html.erb
, a no ser que el método redirija a algún otro lugar.
Rails también proporciona andamiaje, que puede construir rápidamente la mayor parte de la lógica y vistas necesarias para realizar las operaciones más frecuentes.
Otros módulos
Además, Rails ofrece otros módulos, como Action Mailer (para enviar correo electrónico) o Active Resource que proporciona la infraestructura necesaria para crear de manera sencilla recursos REST, algo por lo que apuesta claramente Rails en sus últimas versiones desplazando así a otros modelos como SOAP y XML-RPC a los que se les daba soporte en versiones anteriores mediante Action Web Service.
Ajax on Rails
Ajax es una técnica que permite usar Javascript y XML para procesar peticiones de un navegador web a un servidor web como procesamiento en segundo plano sin cargar otras páginas web adicionales. Rails proporciona diferentes facilidades que hacen más fácil implementar aplicaciones Ajax.
Rails incluye el framework de Javascript Prototype (una serie de herramientas que proporcionan llamadas Ajax y otra funcionalidad habitual en las tareas cliente-servidor) y script.aculo.us, una librería en Javascript con mejoras en la interfaz de usuario (controles avanzados en los formularios, efectos visuales, arrastrar y soltar, etc.).
Soporte de servidores Web
Para desarrollo y pruebas, se utiliza Mongrel o WEBrick, incluido con Ruby. Para utilizar Rails en servidores en producción se está extendiendo el uso de Passenger, una suerte de mod_rails para Apache desarrollado en 2008 por la empresa holandesa Phusion. Otras opciones para producción son Nginx, Mongrel, Apache, Lighttpd con FastCGI o alguna combinación de ambos(por ejemplo utilizando Apache como proxy para los procesos Mongrel). Sobre Apache, mod ruby puede mejorar considerablemente el rendimiento, aunque su uso no se recomienda porque no es seguro utilizar múltiples aplicaciones RoR sobre Apache. [1]
Soporte de Bases de Datos
Dado que la arquitectura Rails favorece el uso de bases de datos se recomienda usar un SGBD para almacenamiento de datos. Rails soporta la librería SQLite si no es posible emplear una base de datos. El acceso a la base de datos es totalmente abstracto desde el punto de vista del programador, y Rails gestiona los accesos a la base de datos automáticamente (aunque, si se necesita, se pueden hacer consultas directas en SQL) Rails intenta mantener la neutralidad con respecto a la base de datos, la portabilidad de la aplicación a diferentes sistemas de base de datos y la reutilización de bases de datos preexistentes. Sin embargo, debido a la diferente naturaleza y prestaciones de los SGBDs el framework no puede garantizar la compatibilidad completa. Se soportan diferentes SGBDs, incluyendo Firebird, MySQL, PostgreSQL, SQLite, IBM DB2, Oracle y Microsoft SQL Server.
Proyectos que utilizan Ruby on Rails
- 43 Things, 43 Places and 43 People
- Backpack
- Basecamp, administrador de proyectos
- BeRuby, Portal que comparte sus ingresos. Ver video
- Blogaqui, Directorio de blogs lusofonos
- Bubbleshare
- Campfire
- Eurekka.com, portal inmobiliario
- FunAdvice
- Instiki, software de wiki
- Kiko
- RubyCorner Directorio de blogs de Ruby y Rails
- to2blogs - Directorio de Blogs de Venezuela
- La Coctelera
- La Razón Edición digital del periódico
- Odeo
- Penny Arcade
- Spongecell
- Ta-Da List, administrador de tareas (To-Do List)
- Thingbox.com
- Typo software de bitácoras
- YubNub
- Simplelog software de bitácoras
- NetBeans NetBeans 6.0
- Amikumu red social (en esperanto)
- in.solit.us almacenamiento de ficheros con un toque 2.0
- Twitter Servicio para estar comunicado, mediante el intercambio de preguntar simples como: Que haces?
- Verema.com Comunidad online de aficionados al vino y la gastronomia y Rankia.com Comunidad financiera
- Mtv.es, Canal Musical en españa
- Cinemavip.com, Comunidad para Profesionales del Cine, la Televisión y el Sector Audiovisual
- [2], Pivotal Tracker, herramienta para administrar proyectos
Requisitos
- Servidor web como Apache 1.3.x or 2.x, lighttpd, algún servidor web compatible con FastCGI con un módulo similar a mod_rewrite, o Nginx. Para desarrolllo, Rails permite utilizar Mongrel(un servidor HTTP ligero creado para soportar aplicaciones en Ruby y muy extendido entre aplicaciones en producción) o WEBrick(un pequeño servidor a medida de rendimiento limitado y no recomendado para su uso en producción). Rails soporta la extensión mod ruby de Apache (servidor web).
- Base de datos(por ejemplo, MySQL, PostgreSQL, o SQLite)
Referencias
Véase también
- Portal:Software libre. Contenido relacionado con Heckert GNU white.svg.
- Ruby
Enlaces externos
- Sitio principal de Ruby on Rails en Internet.