Publicado el 21 de Mayo del 2018
511 visualizaciones desde el 21 de Mayo del 2018
646,3 KB
25 paginas
Creado hace 15a (10/01/2009)
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
RUBY
¿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
Breve descripción
Explicación de las principales características (I)
Garbage
Collector
Dynamic
Typing
Familiar
Syntax
Features
of Ruby
Single
Inherita
nce
Open
Source
Object
Oriented
Breve descripción
Explicación de las principales características (II)
Ejemplo de tipos dinámicos
Java (sin tipo dinámico)
Ruby
int[ ] a = {1,2,3};
a = [1,2,3]
Breve descripción
Explicación de las principales características (III)
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ón
Explicación de las principales características (IV)
Ejemplo redefinición de operadores
class Numeric
def sumar(x)
self.+(x)
end
end
y = 5.sumar 6
# ahora ‘y’ vale 11
Breve descripción
Ventajas y puntos fuertes (I)
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ón
Ventajas y puntos fuertes (II)
Ejemplo de simplicidad
# 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
Breve descripción
Desventajas y limitaciones
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?)
Desarrollo
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 MegaAnfitrion
attr_accessor:nombres
def initialize(nombres = "Mundo")
@nombres = nombres
end
def decir_hola
if @nombres.nil?
puts "..."
elsif @nombres.respond_to?("each")
@nombres.each do |nombre|
puts "Hola #{nombre}"
end
else
puts "Hola #{@nombres}"
end
end
def decir_adios
if @nombres.nil?
puts "..."
elsif @nombres.respond_to?("join")
puts "Adiós #{@nombres.join(", ")}.
Vuelvan pronto."
else
puts "Adiós #{@nombres}. Vuelva
pronto."
end
end
end
Desarrollo
if __FILE__ == $0
ma = MegaAnfitrion.new
ma.decir_hola
ma.decir_adios
ma.nombres = “Pablo"
ma.decir_hola
ma.decir_adios
ma.nombres = [“Javi", “Ruben",
“Celia",
“Juan", “Alvaro"]
ma.decir_hola
ma.decir_adios
ma.nombres = nil
ma.decir_hola
ma.decir_adios
end
Hola Mundo
Adiós Mundo. Vuelve pronto.
Hola Diego
Adiós Diego. Vuelve pronto.
Hola Javi
Hola Rubén
Hola Celia
Hola Juan
Hola Álvaro
Adiós Javi, Rubén, Celia, Juan,
Álvaro. Vuelvan pronto.
...
...
Ruby on Rails
¿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
Componentes de Rails
Action Controller
Action View
Active Record
Action Mailer
Active Resource
Railties
Active Support
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 direcciones
create
create app/apis
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create components
create db
create doc
create lib
create log
create public/images
create public/javascripts
create public/stylesheets
create script
create test/fixtures
create test/functional
create test/mocks/development
create test/mocks/test
create test/unit
....
Ejemplo Aplicación
Ejemplo de código: controllers/principal_controller.rb
class PrincipalController < ApplicationController
def index
mensaje = "Hola a todos...<br>"
["Pedro", "Pablo", "Juan"].each do |nombre|
mensaje += "y a "+nombre+" tambien<br>"
end
render :text => mensaje
end
end
Resultado:
Hola a todos...
y a Pedro tambien
y a Pablo tambien
y a Juan tambien
http://www.hackerdude.com/courses/rails/PrimeraAplicacion.html
Uso de Ruby y on Rails
Se encuentra en un momento de gran éxito
Simulación:
Redes:
NASA Langley Research Center, Motorola …
Open Domain Server
Modelado 3D:
Google SketchUp
Telefonía:
Lucent 3G
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
Conclusiones
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.
Referencias
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/
RUBY & RUBY ON RAILS
Gracias por su atención
¿Alguna duda?
Comentarios de: Ruby & Ruby on Rails (0)
No hay comentarios