Ruby on Rails
Ruby on Rails | |
---|---|
![]() | |
Data | 2004 |
Deseñador | Rails Core Team |
Última versión | 2.0.2 |
Sistema operativo | Multiplataforma |
Licenza | Licenza MIT |
Web | rubyonrails.org |
Ruby on Rails é un framework de aplicacións web libre. Pretente incrementar a velocidade e facer máis sinxelo o desenrrolo de sitios web, e ofrece un framework de código esqueleto (andamiaxe). Normalmente chamado como Rails, ou RoR, Ruby on Rails é un proxecto software libre escrito en Ruby, segundo o paradigma de deseño MVC Modelo-Vista-Controlador. A linguaxe de programación Ruby permite a metaprogramación, do cal Rails fai uso, o que resulta nunha sintaxe que moitos usuarios encontran moi lexible. Rails distribúese a traveés de RubyGems, que é o formato oficial de paquete e canal de distribución de librerías e aplicacións Ruby.
Filosofía
Os principios fundamentais de Ruby on Rails inclúen Convención sobre configuración (CoC) e Non te repitas (DRY).
"Convención sobre configuración" significa que o desenvolvedor só precisa especificar aspectos non convencionais da aplicación. Por exemplo, se hai unha clase Venta no modelo, a táboa correspondente na base de datos é chamado ventas por defecto.
"Non te repitas" refírese á información disposta nun lugar único, e non ambíguo. Por exemplo, ó empregar ActiveRecord, o desenvolvedor non precisa especificar os nomes das columnas da base de datos na definición da clase. No canto, Ruby pode recoller a información dende a base de datos.
Historia

Ruby on Rails foi escrito por David Heinemeier Hansson a partir do seu traballo en Basecamp, unha ferramenta de gestión de proxectos por 37signals. Foi liberado ó público por primeira vez en Xullo de 2004 [1].
- Ruby on Rails 1.0 foi publicado o 13 de diciembre de 2005.
- Ruby on Rails 1.1 foi publicado o 28 de marzo de 2006.
- Ruby on Rails 1.2 foi publicado o 18 de enero de 2007.
- Ruby on Rails 2.0 foi publicado o 7 de diciembre de 2007.[1]
Significado
Ruby on Rails lidera a seguinte xeración de frameworks de aplicacións web, con características moi populares que son agora consideradas como estándares, entre os que están scaffolding, mapeo de obxetos-relacións e instalación simple. Outros proxectos coma Catalyst, Django e TurboGears segueno.
Resumo tecnolóxico
Like many contemporary web frameworks, Rails uses the Model-View-Controller (MVC) architecture for organizing application programming.
Rails proporciona 'ó comezar' andamiaxes que poden construir rápidamente a maioría dos modelos e vistas precisadas para a base das páxinas web. Inclúe tamén outras ferramentas de axuda que veñen instaladas con Rails, coma o servidor web WEBrick, e o sistema de construcción Rake.
Rails fai un uso significativo de librarías JavaScript Prototype e Script.aculo.us para Ajax e na súa interface de usuario.
Para os servizos web Rails inicialmente suportaba SOAP; pero finalmente foi substituída por servizos web RESTful. O recomendada estructura de programación baseada en REST cambia drásticamente na versión 1.2.
Arquitectura MVC de Rails
Ruby on Rails dividese en varios paquetes, chamados Active Record, Active Resource, Action Pack, Active Support e Action Mailer. (Anteriormente á versión 2.0, Rails tamén incluía o paquete Action Web Service que agora foi substituído por Active Resource.) Ademáis dos paquetes estándar, os desenvolvedores poden facer plugins para extender as funcionalidades dos paquetes base.
As pezas da arquitectura Modelo Vista Controlador en Ruby on Rails son as seguintes:
Modelo
Nas aplicacións web orientadas a obxetos sobre bases de datos, o Modelo consiste nas clases que representan ás táboas da base de datos.
En Ruby on Rails, as clases do Modelo son xestionadas por ActiveRecord. Polo xeneral, o único que ten que facer o programador é herdar da clase ActiveRecord::Base
, e o programa averiguará automaticamente que táboa empregar e as columnas que ten.
As definicións das clases tamén detallan as relazóns entre clases con sentencias de mapeo objeto relacional. Por exemplo, se a clase Imagen
ten unha definición has_many :comentarios
, e existe unha instancia de Imagen
chamada a
, entón a.comentarios
devolverá un array con tódolos obxetos Comentario
cuxa columna imagen_id
(na táboa comentarios) sexa igual a a.id
.
As rutinas de validación de datos (p.e. validates_uniqueness_of :checksum
) e as rutinas relacionadas coa actualización (p.e. after_destroy :borrar_archivo
, before_update :actualizar_detalles
) tamén se especifican e implementan na clase do modelo.
O modelo representa:
- As Táboas da Base de Datos.
- Migracións (Expresan Cambios nas BD)
- Observadores
Vista
En MVC, Vista é la lógica de visualización, ou cómo se mostran os datos das clases do Controlador. Con frecuencia nas aplicacións web a vista consiste nunha cantidade mínima de código incluído en HTML.
Existen na actualidade moitas maneiras de xestionar as vistas. O método que se emplea en Rails por defecto ´é epregar Ruby Embebido (archivos .rhtml), que son básicamente fragmentos de código HTML con algo de código en Ruby, seguindo unha sintaxe similar a JSP. Tamén poden construirse vistas en HTML y XML con Builder ou empregando o sistema de plantillas Liquid.
É preciso escribir un pequeno fragmento de código en HTML para cada método do controlador que precisa mostrar información ó usuario. O "maquetado" ou distribución dos elementos da páxina describense separadamente da acción do controlador e os fragmentos poden invocarse uns a outros.
Controlador
En MVC, as clases do Controlador responden á interacción do usuario e invocan á lóxica da aplicación, que á sua vez manipula os datos das clases do Modelo e mostra os resultados empregando as Vistas. Nas aplicacións web basadas en MVC, os métodos do controlador son invocados polo usuario empregando o navegador web.
A implementación do Controlador é manexada polo ActionPack de Rails, que contén a clase ApplicationController
. Unha aplicación Rails simplemente herda de esta clase e define as accións necesarias como métodos, que poden ser invocados dende a web, polo xeneral na forma http://aplicacion/ejemplo/metodo
, que invoca a EjemploController#metodo
, y presenta os datos empregando o arquivo de plantilla /app/views/ejemplo/metodo.rhtml
, a non ser que o método redirixa a algún outro lugar.
Rails tamén proporciona andamiaxe, que pode construir rápidamente a maior parte da lóxica e vistas necesarias para realizar as operaciones máis frecuentes.
Outros módulos
Además, Rails ofrece outros módulos, como Action Mailer (para enviar correo electrónico) e Action Web Service para dar soporte a SOAP y XML-RPC.
Ajax on Rails
Ajax é una técnica que permite empregar Javascript e XML ou JSON para procesar peticións dun navegador web a un servidor web como procesamiento en segundo plano sen cargar outras partes da página web adicionais. Rails proporciona diferentes facilidades que fan máis fácil implementar aplicaciones Ajax.
Rails é anfitrión tanto do framework Prototype en Javascript (unha serie de ferramientas que proporcionan chamadas Ajax e outra funcionalidade habitual nas tarefas cliente-servidor) e script.aculo.us, unha libraría en Javascript con melloras na interface de usuario (controis avanzados nos formularios, efectos visuais, arrastrar e soltar)
Soporte de servidores Web
Para desarrollo e pruebas, empregase o servidor web lixeiro WEBrick, incluido con Ruby. Para o seu uso en produción emprégase Apache ou Lighttpd con FastCGI. Sobre Apache, mod_ruby puede mellorar considerablemente o rendemento, aínda que o seu uso non se recomenda porque non é seguro empregar múltiples aplicacións RoR sobre Apache. [2] A mellor alternativa sen dúbida é empregar a libraría/servidor web Mongrel con un balanceador de carga coma Pound, deste xeito correndo varias instancias de Mongrel alcánzanse uns niveis de escalabilidade e nivel de carga aceptables.
Soporte de Bases de Datos
Dado que a arquitectura Rails favorece o uso de bases de datos recomendase usar un SXBD para almacenamiento de datos. Rails soporta a libraría SQLite si non é posible emplear unha base de datos. O acceso á base de datos é totalmente abstracto dende o punto de vista do programador, e Rails xestiona os accesos á base de datos automáticamente (áinda que, se se necesita, pódese facer consultas directas en SQL) Rails tenta manter a neutralidade con respecto á base de datos, a portabilidade da aplicación a diferentes sistemas de base de datos e a reutilización de bases de datos preexistentes. Sen embargo, debido á diferente natureza e prestacións dos SXBDs o framework non pode garantizar a compatibilidade completa. Sopórtanse diferentes SXBDs, incluíndo MySQL, PostgreSQL, SQLite, IBM DB2, Oracle y Microsoft SQL Server.
Marcas
En Marzo de 2007 David Heinemeier Hansson rexistrou tres aplicacións relacionadas con Rails no USPTO. Estas aplicacións conteñen a frase "RUBY ON RAILS",[2] the word "RAILS"[3] and the official Rails logo.[4] Como consecuencia, no verán de 2007 Hansson denegou a Apress o permiso de empregar o logo de Rails na portada do novo libro escrito por membros autorizados da comunidade. O episodio acarrexou unha protesta política na comunidade Rails.[5][6] En resposta a estas criticas, Hansson fixo as seguintes declaracións:[7]
So autorizarei o uso promocional de Rails ós productos nos que estea envolto directamente. Coma libros que foron parte do proceso de desenrrolo ou para conferencias nas que eu participe.
Proxectos que empregan Rails
- La coctelera - Comunidade de blogs española.
- BBC Programme Catalogue – arquivo de audio e video da televisión e radio BBC
- Blurb.com – publicador de libros persoal
- Twitter – servicio de micro-blogging
- yellowpages.com – Directorio telefónico dos Estados Unidos
Notas
- ↑ Rails 2.0: It's done!
- ↑ ""Ruby on Rails" Trademark Status". USPTO. Consultado o 2007-08-01.
- ↑ ""Rails" Trademark Status". USPTO. Consultado o 2007-08-01.
- ↑ "Rails Logo Trademark Status". USPTO. Consultado o 2007-08-01.
- ↑ Forde, Pete (2007-07-23). "Beginning Rails: From Novice to Professional". Consultado o 2007-08-01.
- ↑ Cooper, Peter (2007-07-24). "David Heinemeier Hansson says No to Use of Rails Logo". Consultado o 2007-08-01.
- ↑ Forde, Pete (2007-07-23). "Beginning Rails: From Novice to Professional". Consultado o 2007-08-01.
Véxase tamén
Outros artigos
Ligazóns externas
- rubyonrails.org
- RailsLodge plugin directory
- Ruby Forge
- RailsURLs : Colección de recursos de ruby on rails ordeados por autor, categoría e etiquetas