Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo...

34
Ruby on Rails Ruby on Rails Gary Castillo Gorbunov

Transcript of Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo...

Page 1: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Ruby on RailsRuby on Rails

Gary Castillo Gorbunov

Page 2: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

El Lenguaje RubyEl Lenguaje Ruby Este es un lenguaje pura y Este es un lenguaje pura y

netamente orientado a objetos.netamente orientado a objetos.

Tiene una sintaxis muy clara y Tiene una sintaxis muy clara y limpia que hace que programar limpia que hace que programar sea elegante y entretenido. sea elegante y entretenido.

Aquí se combinan la facilidad Aquí se combinan la facilidad de uso y aprendizaje de Python de uso y aprendizaje de Python y el pragmatismo de Perl. y el pragmatismo de Perl.

Ruby fue creado en Japón a Ruby fue creado en Japón a principios de los 90, por principios de los 90, por Yukihiro Matzumoto y ha Yukihiro Matzumoto y ha empezado a popularizarse en empezado a popularizarse en todo el mundo en los últimos todo el mundo en los últimos años.años.

Yukihiro MatzumotoYukihiro Matzumoto

Page 3: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Que puedo hacer con Lenguaje Ruby

Front ends usando librerías GTK, QT, Front ends usando librerías GTK, QT, wxWindows, tk,Cocoa.wxWindows, tk,Cocoa.

Aplicaciones cliente servidorAplicaciones cliente servidor Conexiones con BDConexiones con BD Servidores ej. LigHTTPdServidores ej. LigHTTPd Aplicaciones WebAplicaciones Web Generar ejecutables ej. Script2ExeGenerar ejecutables ej. Script2Exe ScriptsScripts

Page 4: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

A que se parece el código? A que se parece el código? # Clase Saludos# Clase Saludosclassclass Saludos Saludos

defdef initialize() initialize()@elnombre = elnombre.capitalize@elnombre = elnombre.capitalize

endend

defdef  di_hola  di_holaputs “Hola #{name}”puts “Hola #{name}”

endendendend

# Crea el Objeto# Crea el Objeto

g = Saludos.new(“mundo”)g = Saludos.new(“mundo”)

# Muestra mensaje Hola Mundo# Muestra mensaje Hola Mundo

g.di_holag.di_hola

Page 5: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Todo es un objetoTodo es un objetoNo tiene variables primitivas como:intcharshortfloat

Todo se transforma

automáticamenteen un objeto

Page 6: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

una_variable = "hola mundo"una_variable = "hola mundo"

puts una_variable.upcaseputs una_variable.upcaseHOLA MUNDOHOLA MUNDO

puts una_variable.lengthputs una_variable.length1010

puts “NO ME GRITEN”.downcaseputs “NO ME GRITEN”.downcaseno me gritenno me griten

puts -3.absputs -3.abs33

Page 7: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Otro ejemploOtro ejemplo

# repite 5 veces hola# repite 5 veces hola5.times{ puts “hola” }5.times{ puts “hola” }

# si la palabra “restorante” incluye subcadena # si la palabra “restorante” incluye subcadena # de caracteres “ante” no hace exit# de caracteres “ante” no hace exitexit unless “restorante”.include? “ante”exit unless “restorante”.include? “ante”

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

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

Page 8: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

En que tecnólogas y En que tecnólogas y plataformas funciona Rubyplataformas funciona Ruby

Interprete de Ruby (Linux, Windows Mac Interprete de Ruby (Linux, Windows Mac OS X, Solaris)OS X, Solaris)

Sun Java 6, interpretado y compilador a Sun Java 6, interpretado y compilador a bytecode.bytecode.

.NET IronRuby.NET IronRuby

Page 9: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Interpretes y Máquinas Virtuales

Ruby 1.8.6 Ruby 1.9.1 Java + Jruby Rubinius .Net

Page 10: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Pruebas de rendimiento

Page 11: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Comparativa con Otros Lenguajes

PHPPHP

RUBY 1.8.6RUBY 1.8.6

PERLPERL

PYTHON 2.5PYTHON 2.5

JRUBYJRUBY

RUBY 1.9.1RUBY 1.9.1

C++C++

0 1 2 3 4 5 6 7

Comparativa de interpretes

Tiempo

Le

ng

ua

je

Page 12: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

TIOBE Programming Community Index TIOBE Programming Community Index for April 2009for April 2009

Delta in Position Programming Language1 1 Java2 2 C3 3 C++4 4 PHP5 5 (Visual) Basic6 9 Python7 7 C#8 8 JavaScript9 6 Perl

10 22 Ruby

PositionApr 2009

PositionApr 2004

Year Winner2008 C 2007 Python 2006 Ruby 2005 Java 2004 PHP 2003 C++

Page 13: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Métricas del uso de RubyMétricas del uso de Ruby

Page 14: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Usuarios de RubyUsuarios de Ruby

Page 15: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Que es Ruby on Rails?Que es Ruby on Rails?Marco de Desarrollo de aplicaciones web de código Marco de Desarrollo de aplicaciones web de código abierto.abierto.

Escrito en el lenguaje de programación Ruby. Escrito en el lenguaje de programación Ruby. De arquitectura Modelo-Vista-Controlador (MVC) De arquitectura Modelo-Vista-Controlador (MVC) Ello hace más sencillo y rápido el desarrollo de Ello hace más sencillo y rápido el desarrollo de proyectos de gran magnitud.proyectos de gran magnitud.

Los expertos manifiestan que se puede desarrollar Los expertos manifiestan que se puede desarrollar una aplicación web medianamente complicada al una aplicación web medianamente complicada al menos diez veces más deprisa que lo que se menos diez veces más deprisa que lo que se tardarías con un Marco de Desarrollo de Java, sin tardarías con un Marco de Desarrollo de Java, sin sacrificios de calidad. sacrificios de calidad.

Creada por David Heinemeier HanssonCreada por David Heinemeier Hansson

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

Page 16: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

MM VV CC

Page 17: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

MODELOMODELO

class Product < ActiveRecord::Baseclass Product < ActiveRecord::Base  validates_presence_of :title, :description, :image_urlvalidates_presence_of :title, :description, :image_url  validates_numericality_of :pricevalidates_numericality_of :price  validates_uniqueness_of :titlevalidates_uniqueness_of :title

def validatedef validateerrors.add(:price,"ese precio debe ser positivo") errors.add(:price,"ese precio debe ser positivo") unless price.nil? || price > 0.0unless price.nil? || price > 0.0endend

endend

Page 18: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

VISTAVISTA<<h1>Listing products</h1>h1>Listing products</h1>

<table><table>    <tr><tr>    <% for column in Product.content_columns %><% for column in Product.content_columns %>        <th><%= column.human_name %></th><th><%= column.human_name %></th>    <% end %><% end %>    </tr></tr>    <% for product in @products %><% for product in @products %>    <tr><tr>    <% for column in Product.content_columns %><% for column in Product.content_columns %>        <td><%=h product.send(column.name) %></td><td><%=h product.send(column.name) %></td>    <% end %><% end %>        <td><%= link_to 'Show', :action => 'show', :id => product %></td><td><%= link_to 'Show', :action => 'show', :id => product %></td>        <td><%= link_to 'Edit', :action => 'edit', :id => product %></td><td><%= link_to 'Edit', :action => 'edit', :id => product %></td>        <td><%= link_to 'Destroy', { :action => 'destroy', :id => product }, <td><%= link_to 'Destroy', { :action => 'destroy', :id => product }, :confirm => 'Are you sure?', :method => :post %></td>:confirm => 'Are you sure?', :method => :post %></td>    </tr></tr><% end %><% end %></table></table>

Page 19: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

CONTROLADORCONTROLADORclass AdminController < ApplicationControllerclass AdminController < ApplicationController    def indexdef index        listlist        render :action => 'list'render :action => 'list'    endend

    def listdef list        @product_pages, @products = paginate :products, :per_page => 10@product_pages, @products = paginate :products, :per_page => 10    endend

    def showdef show        @product = Product.find(params[:id])@product = Product.find(params[:id])    endend

    def newdef new        @product = Product.new@product = Product.new    endend

    def createdef create        @product = Product.new(params[:product])@product = Product.new(params[:product])        if @product.saveif @product.save            flash[:notice] = 'Product was successfully created.'flash[:notice] = 'Product was successfully created.'            redirect_to :action => 'list'redirect_to :action => 'list'        elseelse            render :action => 'new'render :action => 'new'        endend    endend

Page 20: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Relacionando tablasRelacionando tablasreceta.rb

class Receta < ActiveRecord:Baseclass Receta < ActiveRecord:Base belongs_to :categoriabelongs_to :categoriaendend

en categoría.rben categoría.rb

class categoría < ActiveRecord::Baseclass categoría < ActiveRecord::Basehas_many :recetashas_many :recetas

endend

tabla receta tabla receta tabla categoria tabla categoria

campo categoria_id campo categoria_id

Page 21: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Esfuerzo del aprendizajeEsfuerzo del aprendizaje

Page 22: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Filosofía del RoRFilosofía del RoR

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

2)2)Menos tiempoMenos tiempo La mayoría del tiempo que pasas trabajando es tiempo perdido. La mayoría del tiempo que pasas trabajando es tiempo perdido. Demasiadas reuniones, demasiada planificación, demasiado pensar..... Cuanto más Demasiadas reuniones, demasiada planificación, demasiado pensar..... Cuanto más tiempo tienes, más tiempo pierdes.tiempo tienes, más tiempo pierdes.

3)3)Menos abstraccionesMenos abstracciones La mejor manera de aprovechar el tiempo es hacer menos La mejor manera de aprovechar el tiempo es hacer menos trabajo que no sea "real". Menos gráficos, menos documentación, menos especificaciones 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.funcionales. Directo al grano, el producto que tus clientes realmente verán.

4)4)Menos softwareMenos software La clase de software que es satisfactorio de emplear es aquel que La clase de software que es satisfactorio de emplear es aquel que es simple, útil y va directo al grano.es simple, útil y va directo al grano.

Page 23: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Bases de Datos SoportadasBases de Datos Soportadas

MySQLMySQL PostgreSQLPostgreSQL SQLiteSQLite OracleOracle Ms SQL ServerMs SQL Server DB2DB2 FirebirdFirebird

Page 24: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

WebServers SoportadosWebServers Soportados

Apache /FastCGIApache /FastCGI Apache /CGIApache /CGI LighttpdLighttpd MongrelMongrel

Page 25: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

El ScaffoldingEl Scaffoldinghttp://127.0.0.1:3000/receta/newhttp://127.0.0.1:3000/receta/new

http://207.0.0.1/receta/listhttp://207.0.0.1/receta/list

ruby script\generate controller Recetaruby script\generate controller Receta

Page 26: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Que dicen de RoR?Que dicen de RoR?

Ruby on Rails es el tipo de Ruby on Rails es el tipo de Herramienta que te permite Herramienta que te permite crear una aplicación como un crear una aplicación como un shopping cart en menos de 4 shopping cart en menos de 4 horas.horas.

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

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

Page 27: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

El manejador de paquetes El manejador de paquetes GemsGems

Repositorio con mas de 10 000 aplicaciones y plugins

Ejemplo. Generadores de PDF, ODT, Webkit

Page 28: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

AlgunosAlgunosIDE'S Para Desarrollar IDE'S Para Desarrollar Aplicaciones con RORAplicaciones con ROR

Page 29: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Gedit + pluginsGedit + plugins

Page 30: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

NetBeans 6.0

Page 31: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Eclipse – Aptana - RadRails

Page 32: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Quien usa RoRQuien usa RoR

yubnubyubnubBuscador por linea de comandosBuscador por linea de comandos

BubbleShareBubbleShareSitio para compartir fotos y audio relatosSitio para compartir fotos y audio relatos

odeo.comodeo.comsistema de podcasting donde se concentran Radios por internetsistema de podcasting donde se concentran Radios por internet

La CocteleraLa CocteleraServicio de Blog similar al blogger de GoogleServicio de Blog similar al blogger de Google

Page 33: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

Para febrero del 2008 ya contaba con más de

1 000 000 de usuarios

Page 34: Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo categoria_id . Esfuerzo del aprendizaje. ... Buscador por linea de comandos

fin..fin..