Ruby on Rails - COPLEC

coplec.org

Ruby on Rails - COPLEC

Gary Castillo Gorbunov

ong>Rubyong> on Rails


El Lenguaje ong>Rubyong>

� Este es un lenguaje pura y

netamente orientado a objetos.

� Tiene una sintaxis muy clara y

limpia que hace que programar

sea elegante y entretenido.

� Aquí se combinan la facilidad

de uso y aprendizaje de Python

y el pragmatismo de Perl.

ong>Rubyong> fue creado en Japón a

principios de los 90, por

Yukihiro Matzumoto y ha

empezado a popularizarse en

todo el mundo en los últimos

años.

Yukihiro Matzumoto


Que puedo hacer con

Lenguaje ong>Rubyong>

� Front ends usando librerías GTK, QT,

wxWindows, tk,Cocoa.

� Aplicaciones cliente servidor

� Conexiones con BD

� Servidores ej. LigHTTPd

� Aplicaciones Web

� Generar ejecutables ej. Script2Exe

� Scripts


A que se parece el código?

# Clase Saludos

class Saludos

def initialize()

@elnombre = elnombre.capitalize

end

def di_hola

puts “Hola #{name}”

end

end

# Crea el Objeto

g = Saludos.new(“mundo”)

# Muestra mensaje Hola Mundo

g.di_hola


Todo es un objeto

No tiene variables

primitivas como:

int

char

short

float

Todo se

transforma

automáticamente

en un objeto


una_variable = "hola mundo"

puts una_variable.upcase

HOLA MUNDO

puts una_variable.length

10

puts “NO ME GRITEN”.downcase

no me griten

puts -3.abs

puts -3.abs

3


# repite 5 veces hola

5.times{ puts “hola” }

Otro ejemplo

# si la palabra “restorante” incluye subcadena

# de caracteres “ante” no hace exit

exit unless “restorante”.include? “ante”

# For's

For i in ['pera','papaya','piña'] { print i.capitalize }

# hace lo mismo

['pera','papaya','piña'].each {|fruta| print fruta.capitalize }


En que tecnólogas y

plataformas funciona ong>Rubyong>

� Interprete de ong>Rubyong> (Linux, Windows Mac

OS X, Solaris)

� Sun Java 6, interpretado y compilador a

bytecode.

� .NET Ironong>Rubyong>


Interpretes y Máquinas

Virtuales

ong>Rubyong> 1.8.6

ong>Rubyong> 1.9.1

� Java + Jruby

� Rubinius

� .Net


Pruebas de rendimiento


Comparativa con Otros

Lenguajes

Lenguaje

C++

RUBY 1.9.1

JRUBY

PYTHON 2.5

PERL

RUBY 1.8.6

PHP

Comparativa de interpretes

0 1 2 3 4 5 6 7

Tiempo


TIOBE Programming Community Index

for April 2009

Position Position

Apr 2009 Apr 2004 Delta in Position Programming Language

1 1 Java

2 2 C

3 3 C++

4 4 PHP

5 5 (Visual) Basic

6 9 Python

7 7 C#

8 8 JavaScript

9 6 Perl

10 22 ong>Rubyong>

Year Winner

2008 C

2007 Python

2006 ong>Rubyong>

2005 J ava

2004 PHP

2003 C++


Métricas del uso de ong>Rubyong>


Usuarios de ong>Rubyong>


Que es ong>Rubyong> on Rails?

Marco de Desarrollo de aplicaciones web de código

abierto.

Escrito en el lenguaje de programación ong>Rubyong>.

De arquitectura Modelo-Vista-Controlador (MVC)

Ello hace más sencillo y rápido el desarrollo de

proyectos de gran magnitud.

Los expertos manifiestan que se puede desarrollar

una aplicación web medianamente complicada al

menos diez veces más deprisa que lo que se

tardarías con un Marco de Desarrollo de Java, sin

sacrificios de calidad.

Creada por David Heinemeier Hansson

La versión 1 fue lanzada en el 13 de diciembre 2005


M V C


MODELO

class Product < ActiveRecord::Base

validates_presence_of :title, :description, :image_url

validates_numericality_of :price

validates_uniqueness_of :title

def validate

errors.add(:price,"ese precio debe ser positivo")

unless price.nil? || price > 0.0

end

end


Listing h1>Listing products

VISTA












'show', :id => product %>

'edit', :id => product %>

'destroy', :id => product },

:confirm => 'Are you sure?', :method => :post %>




CONTROLADOR

class AdminController < ApplicationController

def index

list

render :action => 'list'

end

def list

@product_pages, @products = paginate :products, :per_page => 10

end

def show

@product = Product.find(params[:id])

end

def new

@product = Product.new

end

def create

@product = Product.new(params[:product])

if @product.save

flash[:notice] = 'Product was successfully created.'

redirect_to :action => 'list'

else

render :action => 'new'

end

end


Relacionando tablas

receta.rb

class Receta < ActiveRecord:Base

belongs_to :categoria

end

en categoría.rb

class categoría < ActiveRecord::Base

has_many :recetas

end

tabla receta tabla categoria

campo categoria_id


Esfuerzo del aprendizaje


Filosofía del RoR

1)Menos 1) Menos dinero No necesitas dinero para el hardware. El hardware es barato. No

necesitas dinero para el software. El software es gratis.

2)Menos 2) Menos tiempo La mayoría del tiempo que pasas trabajando es tiempo perdido.

Demasiadas reuniones, demasiada planificación, demasiado pensar..... Cuanto más

tiempo tienes, más tiempo pierdes.

3)Menos 3) Menos abstracciones La mejor manera de aprovechar el tiempo es hacer menos

trabajo que no sea "real". Menos gráficos, menos documentación, menos especificaciones

funcionales. Directo al grano, el producto que tus clientes realmente verán.

4)Menos 4) Menos software La clase de software que es satisfactorio de emplear es aquel que

es simple, útil y va directo al grano.


Bases de Datos Soportadas

� MySQL

� PostgreSQL

� SQLite

� Oracle

� Ms SQL Server

� DB2

� Firebird


WebServers Soportados

� Apache /FastCGI

� Apache /CGI

� Lighttpd

� Mongrel


El Scaffolding

ruby script\generate controller Receta

http://127.0.0.1:3000/receta/new

http://207.0.0.1/receta/list


Que dicen de RoR?

Andrew Glover es un consultor de IBM y escritor de artículos sobre Java. Java

ong>Rubyong> on Rails es el tipo de

Herramienta que te permite

crear una aplicación como un

shopping cart en menos de 4

horas.

Fuente: http://www-128.ibm.com/developerworks/java/library/j-ruby/


El manejador de paquetes

Gems

� Repositorio con mas de 10 000

aplicaciones y plugins

� Ejemplo. Generadores de PDF, ODT,

Webkit


Algunos

IDE'S Para Desarrollar

Aplicaciones con ROR


Gedit + plugins


NetBeans 6.0


Eclipse – Aptana - RadRails


Quien usa RoR

La Coctelera

Servicio de Blog similar al blogger de Google

BubbleShare

Sitio para compartir fotos y audio relatos

yubnub

Buscador por linea de comandos

odeo.com

sistema de podcasting donde se concentran Radios por internet


Para febrero del

2008 ya contaba

con más de

� 1 000 000 de

usuarios


fin..

Similar magazines