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...
Desarrollo Web

• HTML algo así como reportes
• con JavaScript algo de código
• con CSS otro lenguaje más para
  complicar...
Un framework Web
• Orientado a Objetos
• ORM (ó document oriented database?)
• REST
• Mailer
• Rendering
• Javascript Glue
ex
                           sodero
                            (cajón
                              de
                 ...
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 programa...
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 ...
ActionPack


• ActionView
• ActionController
Hablemos de Recursos
REST

• interfaz polimórfica
• stateless
• un recurso multiples representaciones
Resources on Rails
                               map.resources :products




                          rake routes | grep...
Resources on Rails
                      map.resources :products, :has_many                                 => [ :comments...
ActionController
class ProductsController < ApplicationController
   def index
   end
   def new
   end
   def edit
   end...
request cycle
   http://localhost:3000/products/123

class ProductsController < ApplicationController
def show
  @product ...
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 na...
complementos y otros
•   Manejo automático de entornos

•   Generators

•   Consola

•   Log

•   Rake

•   Migrations

• ...
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...
Una Clase ActiveRecord
 Class Product < ActiveRecord::Base
  has_many :comments
  validates_presence_of :name
  validates_...
Migrations

• es donde se definen las tablas para
  persistencia
• versionado del diseño de tablas del RDBMS
• permite ir h...
Qué es Rake?
•   es un make hecho en ruby para ruby

•   rails usa rake para automatizar tareas

    •   crear bases de da...
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.c...
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://ww...
hola@pedrovisintin.com
http://www.pedrovisintin.com
Upcoming SlideShare
Loading in …5
×

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

1,269 views
1,217 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,269
On SlideShare
0
From Embeds
0
Number of Embeds
500
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Ruby on Rails Pedro Visintin
  2. 2. 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.
  3. 3. 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
  4. 4. Un framework Web • Orientado a Objetos • ORM (ó document oriented database?) • REST • Mailer • Rendering • Javascript Glue
  5. 5. ex sodero (cajón de soda) Yukihiro Matsumoto creador de Ruby
  6. 6. Jopo web 2.0 David Heinemeier Hansson. Creador de Rails
  7. 7. Como nos sentimos programando? • DRY (do not repeat yourself) • Convention Over Configuration • Pensado en el programador, no el la máquina
  8. 8. las aplicaciones no escalan montañas
  9. 9. Rendering • ActionView • erb • haml • otros • view.mime-type.rendering-engine = index.html.haml
  10. 10. erb rendering <h1>Product<%= @product.name %></h1> <ul> <% @product.comments.each do |comment| %> <li><%= comment.subject %></li> <% end %> </ul>
  11. 11. ActionPack • ActionView • ActionController
  12. 12. Hablemos de Recursos
  13. 13. REST • interfaz polimórfica • stateless • un recurso multiples representaciones
  14. 14. 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"}
  15. 15. 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"}
  16. 16. 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
  17. 17. 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
  18. 18. Tu vida es Orientada a Objetos?
  19. 19. 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
  20. 20. complementos y otros • Manejo automático de entornos • Generators • Consola • Log • Rake • Migrations • Testing
  21. 21. Una Clase ActiveRecord Class Product < ActiveRecord::Base end
  22. 22. 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
  23. 23. Una Clase ActiveRecord Class Product < ActiveRecord::Base has_many :comments validates_presence_of :name validates_uniqueness_of :name before_save :generate_code end
  24. 24. 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
  25. 25. 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
  26. 26. Metodologías? • BDD • TDD • HLQSMC (hago lo que se me canta) • FDD (faso driven development) • Otras
  27. 27. 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
  28. 28. Entornos de Desarrollo • Emacs • Vi • Textmate (mac os) • Notepad++ • Netbeans (para los que le gustan las IDE)
  29. 29. bolario?
  30. 30. Preguntas? (si hay tiempo)
  31. 31. 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
  32. 32. hola@pedrovisintin.com http://www.pedrovisintin.com

×