Ruby on Rails

Na Galipedia, a Wikipedia en galego.
Ruby on Rails
Ruby on Rails logo.jpg
Data: 2004
Deseñador: Rails Core Team
Última versión: 3.2.11
Sistema operativo: Multiplataforma
Licenza de software: 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 desenvolvemento 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 través de RubyGems, que é o formato oficial de paquete e canal de distribución de librerías e aplicacións Ruby.

Filosofía[editar | editar a fonte]

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 ambiguo. 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[editar | editar a fonte]

Ruby on Rails foi escrito por David Heinemeier Hansson a partir do seu traballo en Basecamp, unha ferramenta de xestió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 decembro 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 xaneiro de 2007.
  • Ruby on Rails 2.0 foi publicado o 7 de decembro de 2007.[1]

Significado[editar | editar a fonte]

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 ségueno.

Resumo tecnolóxico[editar | editar a fonte]

Like many contemporary web frameworks, Rails uses the Model-View-Controller (MVC) architecture for organizing application programming.

Rails proporciona 'ó comezar' andamiaxes que poden construír rapidamente 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 construció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 soportaba SOAP; pero finalmente foi substituída por servizos web RESTful. O recomendada estrutura de programación baseada en REST cambia drasticamente na versión 1.2.

Arquitectura MVC de Rails[editar | editar a fonte]

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.) Ademais dos paquetes estándar, os desenvolvedores poden facer plugins para estender as funcionalidades dos paquetes base.

As pezas da arquitectura Modelo Vista Controlador en Ruby on Rails son as seguintes:

Modelo[editar | editar a fonte]

Nas aplicacións web orientadas a obxectos 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 relacións entre clases con sentencias de mapeo obxecto 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[editar | editar a fonte]

En MVC, Vista é a lóxica de visualización, ou como 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 emprega en Rails por defecto ´é empregar Ruby Embebido (arquivos .rhtml), que son basicamente fragmentos de código HTML con algo de código en Ruby, seguindo unha sintaxe similar a JSP. Tamén poden construírse 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 descríbense separadamente da acción do controlador e os fragmentos poden invocarse uns a outros.

Controlador[editar | editar a fonte]

En MVC, as clases do Controlador responden á interacción do usuario e invocan á lóxica da aplicación, que á súa vez manipula os datos das clases do Modelo e mostra os resultados empregando as Vistas. Nas aplicacións web baseadas 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/exemplo/metodo, que invoca a ExemploController#metodo, y presenta os datos empregando o arquivo de plantilla /app/views/exemplo/metodo.rhtml, a non ser que o método redirixa a algún outro lugar.

Rails tamén proporciona andamiaxe, que pode construír rapidamente a maior parte da lóxica e vistas necesarias para realizar as operacións máis frecuentes.

Outros módulos[editar | editar a fonte]

Ademais, 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[editar | editar a fonte]

Ajax é una técnica que permite empregar Javascript e XML ou JSON para procesar peticións dun navegador web a un servidor web como procesamento en segundo plano sen cargar outras partes da páxina web adicionais. Rails proporciona diferentes facilidades que fan máis fácil implementar aplicacións Ajax.

Rails é anfitrión tanto do framework Prototype en Javascript (unha serie de ferramentas 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[editar | editar a fonte]

Para desenvolvemento e probas, empregase o servidor web lixeiro WEBrick, incluído 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[editar | editar a fonte]

Dado que a arquitectura Rails favorece o uso de bases de datos recomendase usar un SXBD para almacenamento de datos. Rails soporta a libraría SQLite si non é posible empregar 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 automaticamente (aínda 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 garantir a compatibilidade completa. Sopórtanse diferentes SXBDs, incluíndo MySQL, PostgreSQL, SQLite, IBM DB2, Oracle y Microsoft SQL Server.

Marcas[editar | editar a fonte]

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 desenvolvemento ou para conferencias nas que eu participe.

Proxectos que empregan Rails[editar | editar a fonte]

  • La coctelera - Comunidade de blogs española.
  • Blurb.com – publicador de libros persoal
  • Twitter – servizo de micro-blogging
  • yellowpages.com – Directorio telefónico dos Estados Unidos

Notas[editar | editar a fonte]

Véxase tamén[editar | editar a fonte]

Ligazóns externas[editar | editar a fonte]