Upload
nguyenkien
View
247
Download
3
Embed Size (px)
Citation preview
RUBY & RUBY ON RAILS
Lucía Holguín Labajo 100056186
Héctor Murcia Carbonell 100048647
Ana Belén Mejía Ocaña 100061878
Mª Antonia Ávila Jiménez 100056180
Departamento de Ingeniería Telemática
Universidad Carlos III de Madrid
Contenido
¿Que es?
Historia
Breve descripción
Características
Ventajas y puntos fuertes
Desventajas y limitaciones
Desarrollo
Ruby on Rails
¿Que es?
Principios
Arquitectura MVC
Componentes de Rails
Soporte de servidores web
Ejemplo de Aplicación
Uso de Ruby y on Rails
Conclusiones
Referencias
¿Qué es?
Es un lenguaje de programación interpretado , reflexivo, orientado a objetos y con un balance cuidado.
Historia
Creado por Yukihiro “Matz” Matsumoto (1993,1995)
2006: Reconocimiento masivo grupos activos.
2007: versión 1.8.6 1.9.0
Rendimiento diferente diferentes maquinas virtuales:
- JRuby.
- Rubinius.
TIOBE posiciona a Ruby en la posición 13 del ranking mundial.
RUBY
Viene de…
- Perl
- Python
…
Lo imitan…
- Groovy on Grails
De Perl (perla) Ruby (rubí), de Ruby on Rails Groovy on Grails
RUBY
Featuresof Ruby
GarbageCollector
Familiar Syntax
Open Source
ObjectOriented
Single Inherita
nce
DynamicTyping
Breve descripciónExplicación de las principales características (I)
Breve descripciónExplicación de las principales características (II)
Ejemplo de tipos dinámicos
Java (sin tipo dinámico)
int[ ] a = {1,2,3};
Ruby
a = [1,2,3]
ADEMÁS…
manejo de excepciones
altamente portable
hilos de ejecución simultáneos (green threads)
carga Librerías ( Estándar, DLL y Lib compartidas)
se interpreta: sin compilador
introspección, reflexión y metaprogramación
inyección de dependencias
alteración de objetos en tiempo de ejecución
redefinición de operadores (sobrecarga)
Breve descripciónExplicación de las principales características (III)
Ejemplo redefinición de operadores
class Numeric
def sumar(x)
self.+(x)
end
end
y = 5.sumar 6
# ahora ‘y’ vale 11
Breve descripciónExplicación de las principales características (IV)
Fácilmente integrable (en módulos)
Flexibilidad
Simplicidad (hacer más con menos)
Cercano al lenguaje natural
Productividad
Principio de menor sorpresa
Cambio de paradigma:
“Del humano al servicio de la máquina a la máquina al servicio del humano”
Breve descripciónVentajas y puntos fuertes (I)
# Ruby knows what you mean,
#even if you want to do math on
# an entire Array
cities = %w[ London
Oslo
Paris
Amsterdam
Berlin ]
visited = %w[Berlin Oslo]
puts "I still need " +
"to visit the " +
"following cities:",
cities - visited
Ejemplo de simplicidad
Breve descripciónVentajas y puntos fuertes (II)
Tipos dinámicos problemas inesperados
Metaprogramming “Monkey patching” de las Librerias Estándar de Ruby
Hilos de Ruby son “green threads”
Sin soporte Unicode
Problemas de compatibilidad hacia atrás
Ruby más lento que sus “hermanos” compilados
Ruby 2.0 llega a resolver:
Hilos nativos en lugar de “green threads”
Problemas sin resolver:
Falta especificación ( ¿Especificación ISO?)
Breve descripciónDesventajas y limitaciones
Dos maneras de programar en Ruby:
Interprete IRB
Archivo .rb
¿Cómo desarrollar?
Palabras clave (def, end, if, do…)
Módulos predefinidos:
módulo.método(parámetros) Math.sqrt(9).
Definición de variables y métodos: a = 3 ** 2
Delimitadores de instrucción (;).
#Comentario de una sola línea=begin
Esto es un comentario de varias líneas
=end
Desarrollo
#!/usr/bin/env ruby
Class MegaAnfitrionattr_accessor:nombres
def initialize(nombres = "Mundo")@nombres = nombres
end
def decir_holaif @nombres.nil?
puts "..."elsif @nombres.respond_to?("each")
@nombres.each do |nombre|puts "Hola #{nombre}"
endelse
puts "Hola #{@nombres}"end
end
def decir_adiosif @nombres.nil?
puts "..."elsif @nombres.respond_to?("join")
puts "Adiós #{@nombres.join(", ")}. Vuelvan pronto."
elseputs "Adiós #{@nombres}. Vuelva
pronto."end
end
end
Desarrollo
if __FILE__ == $0ma = MegaAnfitrion.newma.decir_holama.decir_adios
ma.nombres = “Pablo"ma.decir_holama.decir_adios
ma.nombres = [“Javi", “Ruben", “Celia",
“Juan", “Alvaro"]ma.decir_holama.decir_adios
ma.nombres = nilma.decir_holama.decir_adios
end
Hola MundoAdiós Mundo. Vuelve pronto.
Hola DiegoAdiós Diego. Vuelve pronto.
Hola JaviHola RubénHola CeliaHola JuanHola ÁlvaroAdiós Javi, Rubén, Celia, Juan, Álvaro. Vuelvan pronto.
...
...
Desarrollo
¿Qué es?
Framework de aplicaciones web de código abierto
escrito en Ruby.
Principios
DRY - "Don't Repeat Yourself“
Convención sobre configuración
REST - Representational State Transfer
Arquitectura MVC
Ruby on Rails
Arquitectura MVC (I)
Modelo
o Clases que representan las bases de datos.
o Usar SGDB para almacenamiento de datos (MySQL, SQLite, Oracle, ...).
o Gestionadas por ActiveRecord:
• Extender de ActiveRecord::Base
• No declarar propiedades
Ruby on Rails
Arquitectura MVC (II)
Vista
o Lógica de visualización
• Ruby Embebido: HTML+código Ruby
• HTML,XML
Controlador
o Control total de la aplicación.
o Proceso de respuesta a la interacción del usuario.
o Manejado por el ActionPack de Rails heredar
de ActionController::Base.
Ruby on Rails
Action Controller
Action View
Active Record
Action Mailer
Active Resource
Railties
Active Support
Ruby on Rails
Componentes de Rails
Ruby on Rails
Soporte de Servidores Web
Para desarrollo y pruebas:
o Mongrel o WEBrick.
Para producción:
o Nginx, Mongrel, Apache, Lighttpd.
o Uso extendido de Passenger.
Ejemplo Aplicación
Se encuentra en el subdirectorio app
Directorios que la componen:
apis - librerías
controllers
helpers
models
views - archivos rhtml (como JSP o ASP).
views/layouts – diseños (cabeceras y pies de página)
config
script
public - raíz del directorio virtual
test - pruebas funcionales y de unidad
$ rails direccionescreatecreate app/apiscreate app/controllerscreate app/helperscreate app/modelscreate app/views/layoutscreate config/environmentscreate componentscreate dbcreate doccreate libcreate logcreate public/imagescreate public/javascriptscreate public/stylesheetscreate scriptcreate test/fixturescreate test/functionalcreate test/mocks/developmentcreate test/mocks/testcreate test/unit....
Ejemplo Aplicación
Ejemplo de código: controllers/principal_controller.rb
class PrincipalController < ApplicationControllerdef index
mensaje = "Hola a todos...<br>"["Pedro", "Pablo", "Juan"].each do |nombre|mensaje += "y a "+nombre+" tambien<br>"endrender :text => mensaje
endend
Hola a todos...y a Pedro tambieny a Pablo tambieny a Juan tambien
Resultado:
http://www.hackerdude.com/courses/rails/PrimeraAplicacion.html
Se encuentra en un momento de gran éxito
Simulación:NASA Langley Research Center, Motorola …
Modelado 3D:Google SketchUp
Aplicaciones web (on Rails):
Basecamp:
Control
de proyectos
La Coctelera:Crea tu blog
43things:Consigue tus metas
en la vida
ODEO: Graba y comparte
audio
Uso de Ruby y on Rails
Redes:Open Domain Server
Telefonía:Lucent 3G
Tecnología útil, de fácil implementación.
Su éxito radica en la rapidez de sus aplicaciones.
Planteamiento distinto al resto de tecnologías.
Aprendizaje más rápido que en otros lenguajes.
En expansión.
No se dispone de mucha documentación al ser relativamente nuevo.
Conclusiones
http://www.ruby-lang.org/es/
http://es.wikipedia.org/wiki/Ruby
http://www.demiurgo.org/src/ruby/
http://www.ruby-lang.org/es/documentation/quickstart
http://rubytutorial.wikidot.com
http://meshplex.org/wiki/
http://rubyargentina.soveran.com/
http://www.rubycentral.com/
http://www.artima.com/intv/ruby.html
http://www.informit.com/articles/article.aspx?p=18225
http://en.wikipedia.org/wiki/Ruby_on_Rails
http://www.meshplex.org/wiki/Ruby/Ruby_on_Rails_programming_tutorials
http://www.slideshare.net/vishnu/workin-on-the-rails-road
http://guides.rubyonrails.org/getting_started_with_rails.html
http://www.hackerdude.com/courses/rails/PrimeraAplicacion.html
http://tryruby.hobix.com/
Referencias
Gracias por su atención
¿Alguna duda?
RUBY & RUBY ON RAILS