Está en la página 1de 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
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 Familiar
Typing Syntax

Features
of Ruby
Single
Inherita Open
nce 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)

# Ruby knows what you mean,


#even if you want to do math on
# an entire Array

cities = %w[ London


Oslo
Ejemplo de simplicidad 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 decir_adios
if @nombres.nil?
def initialize(nombres = "Mundo") puts "..."
@nombres = nombres elsif @nombres.respond_to?("join")
end puts "Adiós #{@nombres.join(", ")}.
Vuelvan pronto."
def decir_hola else
if @nombres.nil? puts "Adiós #{@nombres}. Vuelva
puts "..." pronto."
elsif @nombres.respond_to?("each") end
end
@nombres.each do |nombre|
puts "Hola #{nombre}" end
end
else
puts "Hola #{@nombres}"
end
end
Desarrollo
if __FILE__ == $0
ma = MegaAnfitrion.new
ma.decir_hola Hola Mundo
ma.decir_adios Adiós Mundo. Vuelve pronto.

ma.nombres = “Pablo" Hola Diego


ma.decir_hola Adiós Diego. Vuelve pronto.
ma.decir_adios
Hola Javi
ma.nombres = [“Javi", “Ruben", Hola Rubén
“Celia", Hola Celia
“Juan", “Alvaro"] Hola Juan
ma.decir_hola Hola Álvaro
ma.decir_adios Adiós Javi, Rubén, Celia, Juan,
Álvaro. Vuelvan pronto.

ma.nombres = nil ...


ma.decir_hola ...
ma.decir_adios
end
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
Active Resource

Action View
Railties

Active Record
Active Support
Action Mailer
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 $ rails direcciones
create
create app/apis
 Directorios que la componen: create app/controllers
create app/helpers
 apis - librerías
create app/models
 controllers create app/views/layouts
 helpers create config/environments
create components
 models create db
 views - archivos rhtml (como JSP o create doc
create lib
ASP). create log
 views/layouts – diseños (cabeceras y create public/images
pies de página) create public/javascripts
create public/stylesheets
 config create script
 script create test/fixtures
create test/functional
 public - raíz del directorio virtual create test/mocks/development
 test - pruebas funcionales y de unidad 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:  Telefonía:


Lucent 3G
Google SketchUp

 Aplicaciones web (on Rails):

Basecamp: La Coctelera: 43things: ODEO:


Control Crea tu blog Consigue tus metas Graba y comparte
en la vida audio
de proyectos
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?

También podría gustarte