( in ) signia <ul><li>presenta </li></ul>
Juan María   Martinez Arce Carlos   Kozuszko
Descubriendo   Ruby on Rails Desarrollo Agil de Aplicaciones Web
> tiempo  > productividad
¡Tiempo!
¿Desarrollo Web?
<ul><li>Aplicación Web =  Aplicación accedida por Browser </li></ul><ul><li>Internet </li></ul>
+ Cobertura Global
+ Bajos requerimientos de Hardware
+ Fácil de Usar
+ Mantenimiento
- Seguridad
Desktop vs Web
Mejores Prácticas
D R Y Don’t Repeat Yourself!
MVC Model View Controller
 
ORM Object Relational Mapping
ORM – Active Record
Control de Versiones
 
Convention over Configuration Convención sobre configuración
Frameworks
Frameworks & Libraries
Frameworks tradicionales <ul><li>Struts - Java </li></ul><ul><li>Springs - Java </li></ul><ul><li>PHP + templates + ORM </...
Frameworks ágiles <ul><li>Ruby on Rails – Ruby </li></ul><ul><li>CakePHP – PHP </li></ul><ul><li>Django – Python </li></ul>
 
Conociendo  ( in ) signia <ul><li>4 Desarrolladores </li></ul><ul><li>2 Diseñadores </li></ul><ul><li>7 proyectos en curso...
¿ Cómo hacemos ?
( in ) signia elige
( in ) signia elige
( in ) signia elige
( in ) signia elige
¿ Por qué Ruby on Rails ?
<ul><li>class   Empresa < ActiveRecord::Base </li></ul><ul><li>belongs_to     :vendedor </li></ul><ul><li>has_many     :us...
<ul><li>Empresa. find( :all ) </li></ul><ul><li>Empresa. find( params[ :id ] ) </li></ul><ul><li>Empresa. find_by_codigo( ...
<ul><li>@empresa =  Empresa. find( params[ :id ] ) </li></ul><ul><li>@empresa .razon_social =  ’(in)signia’ </li></ul><ul>...
<ul><li>class   EmpresasController < ApplicationController </li></ul><ul><li>administrate_me : search   => [‘razon_social’...
<ul><li>cap deploy </li></ul>
¡Nos gusta mucho!
Puntos fuertes de Rails
Open Source
Plataformas soportadas <ul><li>Servidores y entornos de desarrollo </li></ul><ul><ul><li>Linux/Unix </li></ul></ul><ul><ul...
Convención sobre Configuración
Ventajas <ul><li>ORM </li></ul><ul><li>Migraciones </li></ul><ul><li>Mapeo de peticiones HTTP </li></ul><ul><li>Soporte pa...
<ul><li>class   Empresa < ActiveRecord::Base </li></ul><ul><li>belongs_to  :vendedor, :class  =>   “Persona” </li></ul><ul...
<ul><li>vendedores = Persona. find( :all ) </li></ul><ul><li>vendedores. each do  | vendedor | </li></ul><ul><li>vendedor....
<ul><li>class  CreatePersonas < ActiveRecord::Migration </li></ul><ul><li>def  self.up </li></ul><ul><li>create_table  :pe...
<ul><li>class  CreateEmpresas < ActiveRecord::Migration </li></ul><ul><li>def  self.up </li></ul><ul><li>create_table  :em...
<ul><li>ActionController::Routing::Routes.draw  do  |map| </li></ul><ul><li>map. connect   “” ,  :controller   =>   “login...
<ul><li>class  PersonasController < ApplicationController </li></ul><ul><li>def  show </li></ul><ul><li>@persona = Persona...
<ul><li><html> </li></ul><ul><li><body> </li></ul><ul><li><p> Hola  <%=  @persona.nombre   %> </p> </li></ul><ul><li></bod...
<ul><li><html> </li></ul><ul><li><body> </li></ul><ul><li><%   form_for  :persona,  @persona   do   |f|   %> </li></ul><ul...
<ul><li><html> </li></ul><ul><li><body> </li></ul><ul><li><p id=“hora”>  Hora:  <%=  Time.now  %> </p> </li></ul><ul><li><...
Plugins <ul><li>acts_as_authenticated </li></ul><ul><li>file_column </li></ul><ul><li>annotate_models </li></ul><ul><li>ex...
Menos conversación…   Más acción <ul><li>(elvis) </li></ul>
¿dudas, consultas, opiniones? <ul><li>(trataremos de responder) </li></ul>
<ul><li>( in ) signia </li></ul><ul><li>http://www.insignia4u.com </li></ul><ul><li>Juan Maria   Martinez Arce </li></ul><...
Muchas gracias!
Upcoming SlideShare
Loading in …5
×

Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)

3,843 views

Published on

Esta es la presentación correspondiente a la charla "Descubriendo Ruby on Rails: Desarrollo Agil de Aplicaciones Web" dictada el 5 de Junio de 2007 por Juan Maria Martinez Arce y Carlos Kozuszko, ambos miembros de INSIGNIA (www.insignia4u.com); en el marco de la "Semana de la Ingenieria 2007".

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

No Downloads
Views
Total views
3,843
On SlideShare
0
From Embeds
0
Number of Embeds
44
Actions
Shares
0
Downloads
130
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)

    1. 1. ( in ) signia <ul><li>presenta </li></ul>
    2. 2. Juan María Martinez Arce Carlos Kozuszko
    3. 3. Descubriendo Ruby on Rails Desarrollo Agil de Aplicaciones Web
    4. 4. > tiempo > productividad
    5. 5. ¡Tiempo!
    6. 6. ¿Desarrollo Web?
    7. 7. <ul><li>Aplicación Web = Aplicación accedida por Browser </li></ul><ul><li>Internet </li></ul>
    8. 8. + Cobertura Global
    9. 9. + Bajos requerimientos de Hardware
    10. 10. + Fácil de Usar
    11. 11. + Mantenimiento
    12. 12. - Seguridad
    13. 13. Desktop vs Web
    14. 14. Mejores Prácticas
    15. 15. D R Y Don’t Repeat Yourself!
    16. 16. MVC Model View Controller
    17. 18. ORM Object Relational Mapping
    18. 19. ORM – Active Record
    19. 20. Control de Versiones
    20. 22. Convention over Configuration Convención sobre configuración
    21. 23. Frameworks
    22. 24. Frameworks & Libraries
    23. 25. Frameworks tradicionales <ul><li>Struts - Java </li></ul><ul><li>Springs - Java </li></ul><ul><li>PHP + templates + ORM </li></ul><ul><li>Catalyst - Perl </li></ul>
    24. 26. Frameworks ágiles <ul><li>Ruby on Rails – Ruby </li></ul><ul><li>CakePHP – PHP </li></ul><ul><li>Django – Python </li></ul>
    25. 28. Conociendo ( in ) signia <ul><li>4 Desarrolladores </li></ul><ul><li>2 Diseñadores </li></ul><ul><li>7 proyectos en curso : </li></ul><ul><ul><li>Portal de Noticias </li></ul></ul><ul><ul><li>Extranet de Clientes </li></ul></ul><ul><ul><li>Campus Virtual </li></ul></ul><ul><ul><li>Catálogo de Productos </li></ul></ul>
    26. 29. ¿ Cómo hacemos ?
    27. 30. ( in ) signia elige
    28. 31. ( in ) signia elige
    29. 32. ( in ) signia elige
    30. 33. ( in ) signia elige
    31. 34. ¿ Por qué Ruby on Rails ?
    32. 35. <ul><li>class Empresa < ActiveRecord::Base </li></ul><ul><li>belongs_to :vendedor </li></ul><ul><li>has_many :usuarios </li></ul><ul><li>validates_presence_of :razon_social </li></ul><ul><li>validates_uniqueness_of :codigo </li></ul><ul><li>end </li></ul>
    33. 36. <ul><li>Empresa. find( :all ) </li></ul><ul><li>Empresa. find( params[ :id ] ) </li></ul><ul><li>Empresa. find_by_codigo( params[ :codigo ] ) </li></ul><ul><li>Empresa. find_or_create_by_codigo( params[ :codigo ] ) </li></ul>
    34. 37. <ul><li>@empresa = Empresa. find( params[ :id ] ) </li></ul><ul><li>@empresa .razon_social = ’(in)signia’ </li></ul><ul><li>@empresa .codigo = ’000999100’ </li></ul><ul><li>@empresa .save! </li></ul>
    35. 38. <ul><li>class EmpresasController < ApplicationController </li></ul><ul><li>administrate_me : search => [‘razon_social’], </li></ul><ul><li>:accepted => [ :show ], </li></ul><ul><li>:secured => true </li></ul><ul><li>end </li></ul>
    36. 39. <ul><li>cap deploy </li></ul>
    37. 40. ¡Nos gusta mucho!
    38. 41. Puntos fuertes de Rails
    39. 42. Open Source
    40. 43. Plataformas soportadas <ul><li>Servidores y entornos de desarrollo </li></ul><ul><ul><li>Linux/Unix </li></ul></ul><ul><ul><li>Windows </li></ul></ul><ul><ul><li>Mac OS X </li></ul></ul><ul><li>Servidores Web </li></ul><ul><ul><li>Apache </li></ul></ul><ul><ul><li>Lighttpd </li></ul></ul><ul><ul><li>IIS </li></ul></ul><ul><li>Bases de datos </li></ul><ul><ul><li>MySql </li></ul></ul><ul><ul><li>SQLite </li></ul></ul><ul><ul><li>Postgres </li></ul></ul><ul><ul><li>Oracle </li></ul></ul><ul><ul><li>MS SQL Server </li></ul></ul><ul><ul><li>DB2 </li></ul></ul>
    41. 44. Convención sobre Configuración
    42. 45. Ventajas <ul><li>ORM </li></ul><ul><li>Migraciones </li></ul><ul><li>Mapeo de peticiones HTTP </li></ul><ul><li>Soporte para AJAX </li></ul><ul><li>Plugins </li></ul>
    43. 46. <ul><li>class Empresa < ActiveRecord::Base </li></ul><ul><li>belongs_to :vendedor, :class => “Persona” </li></ul><ul><li>has_many :usuarios </li></ul><ul><li>end </li></ul>class Usuario < ActiveRecord::Base belongs_to :empresa end class Persona < ActiveRecord::Base has_many :empresas end
    44. 47. <ul><li>vendedores = Persona. find( :all ) </li></ul><ul><li>vendedores. each do | vendedor | </li></ul><ul><li>vendedor.empresas. each do | empresa | </li></ul><ul><li>empresa.activar! </li></ul><ul><li>puts “Empresa #{empresa} activada.” </li></ul><ul><li>end </li></ul><ul><li>end </li></ul>
    45. 48. <ul><li>class CreatePersonas < ActiveRecord::Migration </li></ul><ul><li>def self.up </li></ul><ul><li>create_table :personas do |t| </li></ul><ul><li>t.column :nombre , :string </li></ul><ul><li>t.column :apellido , :string </li></ul><ul><li>t.column :domicilio , :string </li></ul><ul><li>end </li></ul><ul><li>end </li></ul><ul><li>def self.down </li></ul><ul><li>drop_table :personas </li></ul><ul><li>end </li></ul><ul><li>end </li></ul>
    46. 49. <ul><li>class CreateEmpresas < ActiveRecord::Migration </li></ul><ul><li>def self.up </li></ul><ul><li>create_table :empresas do |t| </li></ul><ul><li>t.column :razon_social , :string </li></ul><ul><li>t.column :cuit , :string </li></ul><ul><li>t.column :vendedor_id , :integer </li></ul><ul><li>end </li></ul><ul><li>end </li></ul><ul><li>def self.down </li></ul><ul><li>drop_table :empresas </li></ul><ul><li>end </li></ul><ul><li>end </li></ul>
    47. 50. <ul><li>ActionController::Routing::Routes.draw do |map| </li></ul><ul><li>map. connect “” , :controller => “login” , :action => “index” </li></ul><ul><li>map. connect “:controller/:action/:id” </li></ul><ul><li>end </li></ul>http://www.demo.com -> LoginController.index http://www.demo.com/empresas/show/1 -> EmpresasController.show http://www.demo.com/empresas/edit/1 -> EmpresasController.edit http://www.demo.com/personas/show/5 -> PersonasController.show http://www.demo.com/personas/edit/5 -> PersonasController.edit
    48. 51. <ul><li>class PersonasController < ApplicationController </li></ul><ul><li>def show </li></ul><ul><li>@persona = Persona.find(params[ :id ]) </li></ul><ul><li>end </li></ul><ul><li>end </li></ul>
    49. 52. <ul><li><html> </li></ul><ul><li><body> </li></ul><ul><li><p> Hola <%= @persona.nombre %> </p> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
    50. 53. <ul><li><html> </li></ul><ul><li><body> </li></ul><ul><li><% form_for :persona, @persona do |f| %> </li></ul><ul><li><label> </li></ul><ul><li>Nombre: </li></ul><ul><li><%= f.text_field :nombre %> </li></ul><ul><li></label> </li></ul><ul><li><% end %> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
    51. 54. <ul><li><html> </li></ul><ul><li><body> </li></ul><ul><li><p id=“hora”> Hora: <%= Time.now %> </p> </li></ul><ul><li><%= link_to_remote “Actualizar!” , </li></ul><ul><li>:url => { :action => “actualizar” }, </li></ul><ul><li>:update => “hora” %> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
    52. 55. Plugins <ul><li>acts_as_authenticated </li></ul><ul><li>file_column </li></ul><ul><li>annotate_models </li></ul><ul><li>exception_notification </li></ul><ul><li>permalink_fu </li></ul><ul><li>textile_editor_helper </li></ul><ul><li>liquid </li></ul><ul><li>asset_packager </li></ul><ul><li>acts_as_ferret </li></ul>
    53. 56. Menos conversación… Más acción <ul><li>(elvis) </li></ul>
    54. 57. ¿dudas, consultas, opiniones? <ul><li>(trataremos de responder) </li></ul>
    55. 58. <ul><li>( in ) signia </li></ul><ul><li>http://www.insignia4u.com </li></ul><ul><li>Juan Maria Martinez Arce </li></ul><ul><li>[email_address] </li></ul><ul><li>Carlos Kozuszko </li></ul><ul><li>[email_address] </li></ul>
    56. 59. Muchas gracias!

    ×