Your SlideShare is downloading. ×
Taller de Introducción a Ruby on Rails
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Taller de Introducción a Ruby on Rails

2,764
views

Published on

Talle de Introducción a Ruby on Rails 3.2 impartido en Diacode Talks! …

Talle de Introducción a Ruby on Rails 3.2 impartido en Diacode Talks!

http://talks.diacode.com
http://diacode.com
http://twitter.com/diacode

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,764
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. Javier Cuevas - Diacode.com
    • 2. Ruby Rails
    • 3. Ruby Rails• Lenguaje de programación interpretado.
    • 4. Ruby Rails• Lenguaje de programación interpretado.• Todo son objetos
    • 5. Ruby Rails• Lenguaje de programación interpretado.• Todo son objetos• Tipado dinámico
    • 6. Ruby Rails• Lenguaje de programación interpretado.• Todo son objetos• Tipado dinámico• Sintaxis limpia e intuitiva
    • 7. Ruby Rails• Lenguaje de programación interpretado.• Todo son objetos• Tipado dinámico• Sintaxis limpia e intuitiva• RubyGems: gestor de paquetes (gemas)
    • 8. Ruby Rails• Lenguaje de programación interpretado.• Todo son objetos• Tipado dinámico• Sintaxis limpia e intuitiva• RubyGems: gestor de paquetes (gemas)• “to enjoy programming, and to be happy”
    • 9. Ruby Rails• Lenguaje de programación interpretado. • Framework MVC para Ruby• Todo son objetos• Tipado dinámico• Sintaxis limpia e intuitiva• RubyGems: gestor de paquetes (gemas)• “to enjoy programming, and to be happy”
    • 10. Ruby Rails• Lenguaje de programación interpretado. • Framework MVC para Ruby• Todo son objetos • Incluye ORM (mapeador modelos - tablas)• Tipado dinámico• Sintaxis limpia e intuitiva• RubyGems: gestor de paquetes (gemas)• “to enjoy programming, and to be happy”
    • 11. Ruby Rails• Lenguaje de programación interpretado. • Framework MVC para Ruby• Todo son objetos • Incluye ORM (mapeador modelos - tablas)• Tipado dinámico • Open Source. Creado en• Sintaxis limpia e intuitiva 2004.• RubyGems: gestor de paquetes (gemas)• “to enjoy programming, and to be happy”
    • 12. Ruby Rails• Lenguaje de programación interpretado. • Framework MVC para Ruby• Todo son objetos • Incluye ORM (mapeador modelos - tablas)• Tipado dinámico • Open Source. Creado en• Sintaxis limpia e intuitiva 2004.• RubyGems: gestor de • “Convention over paquetes (gemas) configuration”• “to enjoy programming, and to be happy”
    • 13. Ruby Rails• Lenguaje de programación interpretado. • Framework MVC para Ruby• Todo son objetos • Incluye ORM (mapeador modelos - tablas)• Tipado dinámico • Open Source. Creado en• Sintaxis limpia e intuitiva 2004.• RubyGems: gestor de • “Convention over paquetes (gemas) configuration”• “to enjoy programming, • “Dont Repeat Yourself” and to be happy”
    • 14. Algunas cosas raras de Ruby
    • 15. No hay corchetes { } ni en ifs ni en métodos def make_positive(number) if number < 0 -number else number Return implícito end end
    • 16. if y unless al final de línea puts es par if number.even? puts es par unless number.odd?
    • 17. Llamadas a métodos sin paréntesisresults = method_name param1, param2results = method_name(param1, param2)results = method_name(param1, param2).another_method
    • 18. Símbolos
    • 19. Símbolos• :my_symbol
    • 20. Símbolos• :my_symbol• NO son variables. NO son constantes.
    • 21. Símbolos• :my_symbol• NO son variables. NO son constantes.• Podemos verlos como etiquetas.
    • 22. Símbolos• :my_symbol• NO son variables. NO son constantes.• Podemos verlos como etiquetas.• Fundamentalmente los usamos como índices en arrays asociativos (Hashes).
    • 23. Símbolos• :my_symbol• NO son variables. NO son constantes.• Podemos verlos como etiquetas.• Fundamentalmente los usamos como índices en arrays asociativos (Hashes).• A pesar de todo: también son objetos.
    • 24. Símbolos• :my_symbol• NO son variables. NO son constantes.• Podemos verlos como etiquetas.• Fundamentalmente los usamos como índices en arrays asociativos (Hashes).• A pesar de todo: también son objetos. def silly_method(options) puts "Color: " + options[:color] puts "City: " + options[:city] end silly_method :color => "red", :city => "Madrid"
    • 25. Blocks• Un Block es un “trozo de código”• Podemos pasarlos como parámetro a un método some_numbers = [1,2,3,4,5] some_numbers.each { |number| puts number } # es equivalente a ... some_numbers.each do |number| puts number end
    • 26. ModelViewController
    • 27. View Web ControllerServer Model
    • 28. View Web ControllerServer Model
    • 29. View Web ControllerServer Model
    • 30. View Web ControllerServer Model
    • 31. View Web ControllerServer Model
    • 32. View Web ControllerServer Model
    • 33. View Web ControllerServer Model
    • 34. View Web ControllerServer Model
    • 35. View Web ControllerServer Model
    • 36. View Web ControllerServer Model
    • 37. MVC en Rails View Helpers WebServer Routes Controller Model ActiveRecord
    • 38. MVC en Rails View Helpers Web Server Routes ControllerBuena práctica:Mantén los Controladores Modelcon el menor número delineas de código.Mueve toda la lógica de tuaplicación al Modelo. ActiveRecord
    • 39. ModelNo esnecesario class Post < ActiveRecord::Baseespecificar # Relationships has_many :commentslosatributos # Validationsdel objeto validates :title, :presence => true validates :content, :presence => trueen la clase. # Class methodsRails def self.all_posts_by_diacode # ...buscará enddirectamente en la # Instance methodsBBDD def is_recent? # ... end end
    • 40. Controllerclass PostsController < ApplicationController def index @posts = Post.all respond_to do |format| format.html format.js { render json: @posts } end end # More actions...end
    • 41. Controllerclass PostsController < ApplicationController Respuesta para def index peticiones html. Al no @posts = Post.all especificar nada renderizará respond_to do |format| automaticamente la vista index.html.erb format.html format.js { render json: @posts } end end # More actions...end
    • 42. View Layout View<html> <head> <% content_for :header do %> <title>Awesome Rails App</title> <h1>Post List</h1> </head> <% end %> <body> <div id="header"> <p>This is the content!</p> <%= yield :header %> <ul> <div> <% @posts.each do |post| %> <div id="content"> <li><%= @post.title %></li> <%= yield %> <% end %> </div> </ul> </body></html> Ruby ERB <% Ruby code -- inline with output %> <%= Ruby expression -- replace with result %> <%# comment -- ignored -- useful in testing %>
    • 43. Un par de acrónimosimportantes en Rails
    • 44. CRUD• Las 4 operaciones básicas que se realizan sobre un objeto • Create (insertar objeto en BBDD) • Read (leer objeto de BBDD) • Update (actualizar objeto en BBDD) • Delete (borrar objeto de la BBDD)
    • 45. REST• Representative State Transfer• Objetos como recursos en la web• HTTP soporta GET, POST, PUT y DELETE http://bit.ly/enBQtL
    • 46. REST• Representative State Transfer• Objetos como recursos en la web• HTTP soporta GET, POST, PUT y DELETE Read -Create Read ReadUpdate Delete http://bit.ly/enBQtL
    • 47. Relacionesentre Modelos http://bit.ly/15HtEh
    • 48. 1a1
    • 49. 1a1con modelo intermedio 1 supplier tiene 1 account 1 supplier tiene 1 account_history a través su account 1 account pertenece a 1 supplier 1 account_history pertenece a 1 supplier
    • 50. 1aN
    • 51. NaN 3 tablas en la BBDD, pero solo 2 modelos en Rails!
    • 52. NaNcon modelo intermedio 3 tablas en la BBDD y 3 modelos
    • 53. MigracionesCrear y modificar la BBDD
    • 54. Migraciones• En Rails todas las modificaciones de la estructura de la BBDD deben hacerse a traves de migraciones.• Las migraciones son archivos Ruby almacenados en [app]/db/migrate• El nombre de archivo de cada migración lleva un timestamp que indica en que orden se ejecutarán.• Permiten crear tablas, modificar columnas, crear índices, etc.• Facilitan la colaboración entre programadores.
    • 55. Migracionesclass CreatePost < ActiveRecord::Migration def change create_table :posts do |t| t.string :title t.text :content Por convención end end el nombre de lasend tablas es siempre en plural
    • 56. Migracionesclass CreatePost < ActiveRecord::Migration def change create_table :posts do |t| t.string :title t.text :content Por convención end end el nombre de lasend tablas es siempre en plural
    • 57. Migraciones• Crear generate migration CreatePosts rails migración Rake permite ejecutar• Ejecutar migración rake db:migrate tareas. Hay algunas ya definidas como db:migrate, pero podemos crear tareas rake propias• Deshacer cambios de la última migración rake db:rollback
    • 58. Crear una app con ScaffoldingDe 0 a 100 en 1 minuto
    • 59. Creando una app• Creamos laapp_name rails new aplicación cd app_name rm public/index.html• * en Linux (Diacode Box) añadimos al Gemfile gem therubyracer Es un intérprete de y ejecutamos en el terminal Javascript para Ruby. bundle install Es necesario para compilar los archivos• Arrancamos el servidor rails s en CoffeeScript.• El servidor corre en http://localhost:3000
    • 60. Haciendo Scaffold• Scaffold nos permite generar automáticamente Modelo, Controlador, Migraciones, etc. para un Modelo. rails generate scaffold Post title:string content:text• Ejecutamos las migraciones generadas rake db:migrate• En http://localhost:3000/posts tendremos un CRUD completamente funcional
    • 61. Consejosprácticos(¡y ya terminamos!)
    • 62. Consejos Prácticos• Consola de Ruby Ideal para probar cosas cuando desconocemos el lenguaje. irb• Consola de Rails Perfecta para probar métodos recién implementados y explorar la base de datos. cd [myapp] rails c
    • 63. Eso es todo por hoy.Ahora, os toca a vosotros.