SlideShare una empresa de Scribd logo
1 de 105
Descargar para leer sin conexión
Ruby on Rails:
Comedia en 3 actos
I.
Prólogo
O de cómo un lenguaje creado en
Japón y un framework hecho por un
tío danés pueden tener algo que ver
con tu vida.
“...Instalando que es gerundio...”   Linux
Windows
“...Instalando que es gerundio...”




                                     http://bitnami.org/stack/rubystack
Buenas intros
“...y se hizo Ruby...”




                         http://www.humblelittlerubybook.com/


                         http://www.ruby-lang.org/es/documentation/
Podéis tener abierto...
“...y se hizo Ruby...”




                         http://www.ruby-lang.org/es/documentation/quickstart/


                         http://railsapi.com/
“...y se hizo Ruby...”




                         Snippets
                         en Textmate e IRB
II.
Romance
O de cómo te puedes
enamorar de una
tecnología en 30 minutos.
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
                                                   1   # SQLite version 3.x
                                                   2   #   gem install sqlite3-ruby (not necessary on OS X Leopard)
                                                   3   development:
                                                   4     adapter: sqlite3
                                                   5     database: db/development.sqlite3
                                                   6     pool: 5
                                                   7     timeout: 5000
                                                   8
                                                   9   # Warning: The database defined as "test" will be erased and
                                                  10   # re-generated from your development database when you run "rake".
                                                  11   # Do not set this db to the same as development or production.
                                                  12   test:
                                                  13     adapter: sqlite3
                                                  14     database: db/test.sqlite3
                                                  15     pool: 5
                                                  16     timeout: 5000
                                                  17
                                                  18   production:
                                                  19     adapter: sqlite3
                                                  20     database: db/production.sqlite3
                                                  21     pool: 5
                                                  22     timeout: 5000
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”




              Hello, Rails!
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”




                            Scaffolding
“... en el principio reinaban las tinieblas...”
                                         Scaffolding
“... en el principio reinaban las tinieblas...”
                                        Migration
“... en el principio reinaban las tinieblas...”
                                        Migration
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”




    (revisemos...)
                     Bingo!
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”




                  DRY
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
“... en el principio reinaban las tinieblas...”
                                                   1 class CommentsController < ApplicationController
                                                   2   def index
                                                   3     @post = Post.find(params[:post_id])
                                                   4     @comments = @post.comments
                                                   5   end
                                                   6
                                                   7   def show
                                                   8     @post = Post.find(params[:post_id])
                                                   9     @comment = @post.comments.find(params[:id])
                                                  10   end
                                                  11
                                                  12   def new
                                                  13     @post = Post.find(params[:post_id])
                                                  14     @comment = @post.comments.build
                                                  15   end
                                                  16
                                                  17   def create
                                                  18     @post = Post.find(params[:post_id])
                                                  19     @comment = @post.comments.build(params[:comment])
                                                  20     if @comment.save
                                                  21       redirect_to post_comment_url(@post, @comment)
                                                  22     else
                                                  23       render :action => "new"
                                                  24     end
                                                  25   end
                                                  26
“... en el principio reinaban las tinieblas...”
                                                  27      def edit
                                                       28      @post = Post.find(params[:post_id])
                                                       29      @comment = @post.comments.find(params[:id])
                                                       30    end
                                                       31
                                                       32    def update
                                                       33      @post = Post.find(params[:post_id])
                                                       34      @comment = Comment.find(params[:id])
                                                       35      if @comment.update_attributes(params[:comment])
                                                       36        redirect_to post_comment_url(@post, @comment)
                                                       37      else
                                                       38        render :action => "edit"
                                                       39      end
                                                       40    end
                                                       41
                                                       42    def destroy
                                                       43      @post = Post.find(params[:post_id])
                                                       44      @comment = Comment.find(params[:id])
                                                       45      @comment.destroy
                                                       46
                                                       47      respond_to do |format|
                                                       48        format.html { redirect_to post_comments_path(@post) }
                                                       49        format.xml { head :ok }
                                                       50      end
                                                       51    end
                                                       52
                                                       53 end
Intermedio
III.
Tocata y
fuga
O de cómo lo que parecía una sola cosa
es en realidad diferentes partes que
funcionan juntas y tienen su propia
alma.
“... sobre tí levantaré mi iglesia...”



                                         ActiveRecord
                                         ActionController
                                         ActionView
                                         Migrations
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”




                                          validates_presence_of
                                         validates_uniqueness_of
                                          validates_associated
                                                  etc...
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”




              Relaciones
“... sobre tí levantaré mi iglesia...”
“... sobre tí levantaré mi iglesia...”




                    La manera coñazo:
“... sobre tí levantaré mi iglesia...”




               Rails way:
“... sobre tí levantaré mi iglesia...”



                            Tipos
“... sobre tí levantaré mi iglesia...”
                                   belongs_to
“... sobre tí levantaré mi iglesia...”
                                   has_one
“... sobre tí levantaré mi iglesia...”
                                    has_many
“... sobre tí levantaré mi iglesia...”
                                   has_many :through
“... sobre tí levantaré mi iglesia...”
                                         has_many :through
“... sobre tí levantaré mi iglesia...”
                                   has_many :through como atajo
“... sobre tí levantaré mi iglesia...”

                                  Polimórficas
“... sobre tí levantaré mi iglesia...”
                                   Polimórficas
“... sobre tí levantaré mi iglesia...”   Metodos añadidos por las relaciones
“... sobre tí levantaré mi iglesia...”

                                 Metodos añadidos por las relaciones
“... sobre tí levantaré mi iglesia...”

                                 Callbacks
“... sobre tí levantaré mi iglesia...”

                                 Callbacks
“... sobre tí levantaré mi iglesia...”

                                 Extensiones
Querys
Escenario
Migraciones
Fin y Comienzo
Aitor García
aitor@linkingpaths.com
twitter.com/aitorgarciarey

Más contenido relacionado

Similar a Rails intro

Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMjavier ramirez
 
Introducción al mundo NoSQL
Introducción al mundo NoSQLIntroducción al mundo NoSQL
Introducción al mundo NoSQLCésar Rodas
 
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]RootedCON
 
Historia de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan SaccoHistoria de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan SaccoJuan Sacco
 
The Original Hacker número 11.
The Original Hacker número 11.The Original Hacker número 11.
The Original Hacker número 11.Huehue 1
 
Slides components en
Slides components enSlides components en
Slides components enJavier López
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
 
Material taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4edMaterial taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4edIgnacio Sorribas
 
Tecnicas de Blind-Mysql-Injection
Tecnicas de Blind-Mysql-InjectionTecnicas de Blind-Mysql-Injection
Tecnicas de Blind-Mysql-Injectionq3rv0
 
Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007JuancaPompilla
 
Manual Técnico Para Hacer Réplica
Manual Técnico Para Hacer RéplicaManual Técnico Para Hacer Réplica
Manual Técnico Para Hacer RéplicaAndrés Pizarro
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menosEduard Tomàs
 
Docker: de principante a pro
Docker: de principante a proDocker: de principante a pro
Docker: de principante a proPlain Concepts
 

Similar a Rails intro (16)

Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVM
 
Introducción a Clojure
Introducción a ClojureIntroducción a Clojure
Introducción a Clojure
 
Introducción al mundo NoSQL
Introducción al mundo NoSQLIntroducción al mundo NoSQL
Introducción al mundo NoSQL
 
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
 
Historia de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan SaccoHistoria de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan Sacco
 
Ruby para Java Developers
Ruby para Java DevelopersRuby para Java Developers
Ruby para Java Developers
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
 
The Original Hacker número 11.
The Original Hacker número 11.The Original Hacker número 11.
The Original Hacker número 11.
 
Slides components en
Slides components enSlides components en
Slides components en
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Material taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4edMaterial taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4ed
 
Tecnicas de Blind-Mysql-Injection
Tecnicas de Blind-Mysql-InjectionTecnicas de Blind-Mysql-Injection
Tecnicas de Blind-Mysql-Injection
 
Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007
 
Manual Técnico Para Hacer Réplica
Manual Técnico Para Hacer RéplicaManual Técnico Para Hacer Réplica
Manual Técnico Para Hacer Réplica
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menos
 
Docker: de principante a pro
Docker: de principante a proDocker: de principante a pro
Docker: de principante a pro
 

Último

El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 

Último (20)

El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 

Rails intro