Rails is a full-stack, open-source web framework in Ruby for writing real-world applications with joy and less code than most frameworks spend doing XML sit-ups.
¿Ruby on Rails (RoR)?
Rails is a full-stack, open-source web framework in Ruby for writing real-world applications with joy and less code than most frameworks spend doing XML sit-ups.
Por tanto RoR es:
Es un Framework de desarrollo para web
Es software libre
Esta basado en Ruby
Es más divertido y se usa menos codigo
No usa configuraciones en XML
Está escrito por David Heinemeier Hansson
No nació de cero, sino que fue extraído de los proyectos de DHH en 37signals
Se pueden hacer cosas como: 5.times {|i|
puts "Hola mundo #{i}"
}
Ruby II
Existen varios intérpretes no oficiales: JRuby, Ruby.NET
No es excesivamente rápido, pero se está trabajando para que lo sea
La máquina virtual (YARV) que ejecutará el código de Ruby 2.0 es muy rápida!
Arquitectura de las aplicaciones
Estan basadas en el modelo MVC (modelo-vista-controlador)
Los tres componentes son:
ActionRecord - Modelo
ActionView - Vista
ActionController - Controlador
Active Record
Es la capa ORM (object-relacional mapping)
Conecta con distintas bases da datos, como: db2, mysql, oracle, Postgres, SQLserver y SQLite. Esta lista sigue creciendo :-)
Plulariza los nombres de las tablas para usarlos como clases, ejemplo: db=> usuarios, clase=>usuario
Falicidad para relacionar tablas ( belong_to, has_many, belong_to_has_many)
Comprobación de datos antes de pasarlos a la db
CRUD (create, read, update, delete) en la base de datos de manera muy sencilla y cómoda.
Active Controller
Encargada de recibir la petición, procesarla y devolver el resultado, es la unión entre activeController y activeView
Encargadas de procesar los datos que vienen del navegador y hacer una petición al ActiveRecord, al actionMailer o renderizar algo en el ActiveWiev, osea enrutar la petición.
Crea todas las url's de la aplicación, mediante el uso de los nombres de los controladores y sus acciones.
Mantiene la session y las cookies
Notificaciones flash entre acciones
Filtros asociados a la ejecución de acciones, before, after y around
Active View
Sistema de plantillas se renderizan en función de las peticiones al controlador y a sus acciones
Las plantillas normalmente son html y xml, en el que se ha incustrado código ruby.
Normalmente cada acción del controlador tiene asignada una plantilla y cada controlador tiene una plantilla especial llamada layout que siempre se renderiza independientemente de la acción a la que se llame.
Para no incluir demasiado codigo en ruby en nuestras plantillas y reutilizar el código al máximo, podemos usar los Helper de cada controlador.
Resumiendo la arquitectura de rails
Web 2.0
¿Que es web 2.0? Nadie se pone de acuerdo, que empieze el flame =:-)
Yo entiendo por web 2.0:
Aplicaciones web con funcionalidades similares a las de escritorio, ejemplos: basecamp, writely, office Live!!?? y aplicaciones web con interfaz similar al escritorio flickr, google maps.
Uso de etiquetas para marcar contenidos, ejemplos: flickr para fotos, del.icio.us para bookmarks, 43things
Sindicación de contenidos mediante, rss, xml, atom, etc...
Para conseguir que los interfaces de las web sean mas rollito desktop se usa AJAX
Pero vamos es mi opinión seguro que no coincide con la tuya, si no usa el el validador 2.0
AJAX
AJAX
Asynchronous JavaScript And XML
"Ajax isn't a technology. It's really several technologies, each flourishing in its own right, coming together in powerful new ways. Ajax incorporates:
standards-based presentation using XHTML and CSS;
dynamic display and interaction using the Document Object Model;
data interchange and manipulation using XML and XSLT;
asynchronous data retrieval using XMLHttpRequest;
and JavaScript binding everything together."
by Jesse James Garrett of web design firm Adaptive Path
Lleva existiendo desde el año 1998
XMLHttpRequest fue creado por Microsoft
La primera aplicación AJAX fue Outlook Web Access (OWA)
En realidad, no es necesario usar XML. La verdadera importancia está en la parte asíncrona
El W3C está trabajando en REST, una homogeinización de AJAX
AJAX en Ruby On Rails
RoR utiliza una libreria javascript, Prototype.
Su autor es Sam Stephenson
La abstracción con respecto al navegador que ejecuta el código es completa
RoR abstrae mucha funcionalidad de Prototype, por lo que pocas veces necesitaremos conocer Javascript
Script.aculo.us es un conjunto de objetos Javascript para escribir efectos visuales
Thomas Fuchs es el artífice de este proyecto
Está basado en Prototype y gracias a eso, aprovecha toda la potencia de AJAX
Algunos efectos están disponibles directamente desde Ruby on Rails, sin necesidad de escribir código Javascript