• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
 

Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires

on

  • 2,374 views

Slides de la presentación realizada el 19 de Septiembre del 2009 en el contexto de Software Freedom Day 09 realizado en la UTN sede medrano. Para más información: ...

Slides de la presentación realizada el 19 de Septiembre del 2009 en el contexto de Software Freedom Day 09 realizado en la UTN sede medrano. Para más información: http://blogs.onrails.com.ar/2009/9/14/rails-en-software-freedom-day-09

Statistics

Views

Total Views
2,374
Views on SlideShare
1,876
Embed Views
498

Actions

Likes
0
Downloads
23
Comments
0

6 Embeds 498

http://blogs.onrails.com.ar 424
http://onrails.com.ar 40
http://wiki.onrails.com.ar 16
http://www.onrails.com.ar 15
http://www.slideshare.net 2
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires Presentation Transcript

    • Ruby on Rails Pedro Visintin
    • Dale un pescado a un hombre... ...Y LO ALIMENTARÁS POR UN DÍA. Enseñale a pescar, y lo alimentarás por una vida.
    • Desarrollo Web • HTML algo así como reportes • con JavaScript algo de código • con CSS otro lenguaje más para complicarle la vida al programador y al diseñador gráfico • deadlines asesinos y cambios constantes • Una hermosa RDBMS para persistencia
    • Un framework Web • Orientado a Objetos • ORM (ó document oriented database?) • REST • Mailer • Rendering • Javascript Glue
    • ex sodero (cajón de soda) Yukihiro Matsumoto creador de Ruby
    • Jopo web 2.0 David Heinemeier Hansson. Creador de Rails
    • Como nos sentimos programando? • DRY (do not repeat yourself) • Convention Over Configuration • Pensado en el programador, no el la máquina
    • las aplicaciones no escalan montañas
    • Rendering • ActionView • erb • haml • otros • view.mime-type.rendering-engine = index.html.haml
    • erb rendering <h1>Product<%= @product.name %></h1> <ul> <% @product.comments.each do |comment| %> <li><%= comment.subject %></li> <% end %> </ul>
    • ActionPack • ActionView • ActionController
    • Hablemos de Recursos
    • REST • interfaz polimórfica • stateless • un recurso multiples representaciones
    • Resources on Rails map.resources :products rake routes | grep product products GET /products(.:format) {:action=>"index", :controller=>"products"} POST /products(.:format) {:action=>"create", :controller=>"products"} new_product GET /products/new(.:format) {:action=>"new", :controller=>"products"} edit_product GET /products/:id/edit(.:format) {:action=>"edit", :controller=>"products"} product GET /products/:id(.:format) {:action=>"show", :controller=>"products"} PUT /products/:id(.:format) {:action=>"update", :controller=>"products"} DELETE /products/:id(.:format) {:action=>"destroy", :controller=>"products"}
    • Resources on Rails map.resources :products, :has_many => [ :comments] rake routes|grep product products GET /products(.:format) {:action=>"index", :controller=>"products"} POST /products(.:format) {:action=>"create", :controller=>"products"} new_product GET /products/new(.:format) {:action=>"new", :controller=>"products"} edit_product GET /products/:id/edit(.:format) {:action=>"edit", :controller=>"products"} product GET /products/:id(.:format) {:action=>"show", :controller=>"products"} PUT /products/:id(.:format) {:action=>"update", :controller=>"products"} DELETE /products/:id(.:format) {:action=>"destroy", :controller=>"products"} product_comments GET /products/:product_id/comments(.:format) {:action=>"index", :controller=>"comments"} POST /products/:product_id/comments(.:format) {:action=>"create", :controller=>"comments"} new_product_comment GET /products/:product_id/comments/new(.:format) {:action=>"new", :controller=>"comments"} edit_product_comment GET /products/:product_id/comments/:id/edit(.:format){ :action=>"edit", :controller=>"comments"} product_comment GET /products/:product_id/comments/:id(.:format) {:action=>"show", :controller=>"comments"} PUT /products/:product_id/comments/:id(.:format) {:action=>"update", :controller=>"comments"} DELETE /products/:product_id/comments/:id(.:format) {:action=>"destroy", :controller=>"comments"}
    • ActionController class ProductsController < ApplicationController def index end def new end def edit end def show end def create end def update end def destroy end end
    • request cycle http://localhost:3000/products/123 class ProductsController < ApplicationController def show @product = Product.find(params[:id]) end RAILS_ROOT/apps/views/products/show.html.erb
    • Tu vida es Orientada a Objetos?
    • The Orm: ActiveRecord • persiste transparentemente a un RDBMS a través de adapters • se escribe muy poco SQL casi nada • provee macros para asociaciones • provee validaciones • provee callbacks en los instantes necesarios • (named scopes) provee asociar metodos a queries predefinidos y anidarlos indefinidamente • soporte de transacciones • soporte de observers • reflections en asociaciones y agregaciones
    • complementos y otros • Manejo automático de entornos • Generators • Consola • Log • Rake • Migrations • Testing
    • Una Clase ActiveRecord Class Product < ActiveRecord::Base end
    • El soporte en la BD class CreateProducts < ActiveRecord::Migration def self.up create_table :products do |t| t.string :name, :limit => 100 t.timestamps end end def self.down drop_table :products end end
    • Una Clase ActiveRecord Class Product < ActiveRecord::Base has_many :comments validates_presence_of :name validates_uniqueness_of :name before_save :generate_code end
    • Migrations • es donde se definen las tablas para persistencia • versionado del diseño de tablas del RDBMS • permite ir hacia adelante o hacia atrás • nos desliga del SQL
    • Qué es Rake? • es un make hecho en ruby para ruby • rails usa rake para automatizar tareas • crear bases de datos • actualizar scripts • migraciones • etc • rake tiene dependencias de tareas a ejecutar
    • Metodologías? • BDD • TDD • HLQSMC (hago lo que se me canta) • FDD (faso driven development) • Otras
    • BDD con Rspec describe Project do describe “creating” do it “should validate uniqueness of name” do Project.create!(:name=>‘proj’) Project.new(:name=>‘proj’).should_not be_valid end end end
    • Entornos de Desarrollo • Emacs • Vi • Textmate (mac os) • Notepad++ • Netbeans (para los que le gustan las IDE)
    • bolario?
    • Preguntas? (si hay tiempo)
    • Referencias • http://guides.rubyonrails.org/ • http://www.javapassion.com/rubyonrails/ #Ruby_On_Rails_Basics • http://www.rubyonrails.org/ • http://lista.rubyargentina.com.ar/ • http://blogs.onrails.com.ar
    • hola@pedrovisintin.com http://www.pedrovisintin.com