ruby cucumber training | ruby cucumber course | ruby cucumber online training
Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo...
Transcript of Ruby on Rails - coplec.org · Interprete de Ruby ... tabla receta tabla categoria campo...
Ruby on RailsRuby on Rails
Gary Castillo Gorbunov
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
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
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
Todo es un objetoTodo es un objetoNo tiene variables primitivas como:intcharshortfloat
Todo se transforma
automáticamenteen un objeto
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
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 }
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
Interpretes y Máquinas Virtuales
Ruby 1.8.6 Ruby 1.9.1 Java + Jruby Rubinius .Net
Pruebas de rendimiento
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
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++
Métricas del uso de RubyMétricas del uso de Ruby
Usuarios de RubyUsuarios de Ruby
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
MM VV CC
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
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>
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
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
Esfuerzo del aprendizajeEsfuerzo del aprendizaje
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.
Bases de Datos SoportadasBases de Datos Soportadas
MySQLMySQL PostgreSQLPostgreSQL SQLiteSQLite OracleOracle Ms SQL ServerMs SQL Server DB2DB2 FirebirdFirebird
WebServers SoportadosWebServers Soportados
Apache /FastCGIApache /FastCGI Apache /CGIApache /CGI LighttpdLighttpd MongrelMongrel
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
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/
El manejador de paquetes El manejador de paquetes GemsGems
Repositorio con mas de 10 000 aplicaciones y plugins
Ejemplo. Generadores de PDF, ODT, Webkit
AlgunosAlgunosIDE'S Para Desarrollar IDE'S Para Desarrollar Aplicaciones con RORAplicaciones con ROR
Gedit + pluginsGedit + plugins
NetBeans 6.0
Eclipse – Aptana - RadRails
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
Para febrero del 2008 ya contaba con más de
1 000 000 de usuarios
fin..fin..