ruby & ruby on rails - it.uc3m.es · pdf fileruby & ruby on rails lucía...

25
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

Upload: nguyenkien

Post on 16-Mar-2018

246 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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

Page 2: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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

Page 3: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

¿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

Page 4: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

Viene de…

- Perl

- Python

Lo imitan…

- Groovy on Grails

De Perl (perla) Ruby (rubí), de Ruby on Rails Groovy on Grails

RUBY

Page 5: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

Featuresof Ruby

GarbageCollector

Familiar Syntax

Open Source

ObjectOriented

Single Inherita

nce

DynamicTyping

Breve descripciónExplicación de las principales características (I)

Page 6: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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]

Page 7: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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)

Page 8: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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)

Page 9: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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)

Page 10: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

# 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)

Page 11: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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

Page 12: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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

Page 13: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

#!/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

Page 14: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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

Page 15: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

¿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

Page 16: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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

Page 17: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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

Page 18: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

Action Controller

Action View

Active Record

Action Mailer

Active Resource

Railties

Active Support

Ruby on Rails

Componentes de Rails

Page 19: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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.

Page 20: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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....

Page 21: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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

Page 22: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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

Page 23: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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

Page 24: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

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

Page 25: RUBY & RUBY ON RAILS - it.uc3m.es · PDF fileRUBY & RUBY ON RAILS Lucía Holguín Labajo 100056186 Héctor Murcia Carbonell 100048647 Ana Belén Mejía Ocaña 100061878 ... Google

Gracias por su atención

¿Alguna duda?

RUBY & RUBY ON RAILS