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
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. 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. Un framework Web
• Orientado a Objetos
• ORM (ó document oriented database?)
• REST
• Mailer
• Rendering
• Javascript Glue
5. ex
sodero
(cajón
de
soda)
Yukihiro Matsumoto creador de Ruby
6. Jopo
web 2.0
David Heinemeier Hansson. Creador de
Rails
7. Como nos sentimos
programando?
• DRY (do not repeat yourself)
• Convention Over Configuration
• Pensado en el programador, no el la
máquina
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
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. complementos y otros
• Manejo automático de entornos
• Generators
• Consola
• Log
• Rake
• Migrations
• Testing
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. Una Clase ActiveRecord
Class Product < ActiveRecord::Base
has_many :comments
validates_presence_of :name
validates_uniqueness_of :name
before_save :generate_code
end
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. 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
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. Entornos de Desarrollo
• Emacs
• Vi
• Textmate (mac os)
• Notepad++
• Netbeans (para los que le gustan las IDE)