SlideShare uma empresa Scribd logo
1 de 47
Mi experiencia generando sonrisas con magia
… y con Ruby on Rails
Llenamos de magia y alegría los
corazones de los colombianos
haciendo y apoyando eventos sociales
Voluntario
Trabajo social
» Agradable Sorpresa
» Agradable Sorpresa
» Un comando lo hace todo (rails new app)
˃ Crea capas de datos, negocio y presentación!
» Agradable Sorpresa
» Un comando lo hace todo (rails new app)
˃ Crea capas de datos, negocio y presentación!
» No hay que echar SQL! 
» Agradable Sorpresa
» Un comando lo hace todo (rails new app)
˃ Crea capas de datos, negocio y presentación!
» No hay que echar SQL! 
» No hay que hacer los CRUDS! 
» Agradable Sorpresa
» Un comando lo hace todo (rails new app)
˃ Crea capas de datos, negocio y presentación!
» No hay que echar SQL! 
» No hay que hacer los CRUDS! 
» Hasta crea ambientes diferentes
˃ Desarrollo, Pruebas, Producción
» Agradable Sorpresa
» Un comando lo hace todo (rails new app)
˃ Crea capas de datos, negocio y presentación!
» No hay que echar SQL! 
» No hay que hacer los CRUDS! 
» Hasta crea ambientes diferentes
˃ Desarrollo, Pruebas, Producción
» rails s -> localhost:3000
» Agradable Sorpresa
» Un comando lo hace todo (rails new app)
˃ Crea capas de datos, negocio y presentación!
» No hay que echar SQL! 
» No hay que hacer los CRUDS! 
» Hasta crea ambientes diferentes
˃ Desarrollo, Pruebas, Producción
» rails s -> localhost:3000
» RoR es open source que sí (me) funciona
¿Cómo se migra el pensamiento para programar en un
framework MVC?
RoR
http://www.codeproject.com/Articles/36847/Three-Layer-Architecture-in-C-NET
Ruby
• The Book of ruby
• The Ruby Developer’s guide
Rails
• Agile Web Development with Rails
• Why’s (poignant) guide to ruby
• Advanced Rails Recipes
» Yo lo hago por que quiero, puedo …
˃ No utilizar el framework ni los helpers, etc.
» Yo lo hago por que quiero, puedo …
˃ No utilizar el framework ni los helpers, etc.
class EventAdmin < ActiveRecord::Base
belongs_to :member
belongs_to :event
validates :event_id, :presence => true, :uniqueness => {:scope => :member_id}
scope :owners, where(:is_owner => true, :active => true)
end
» Yo lo hago por que quiero, puedo …
˃ No utilizar el framework ni los helpers, etc.
» Si en tu proyecto lo necesitas, seguramente
alguien más también lo necesitó en el suyo
˃ La comunidad es gigante y hay de todo. Úsala!
» Yo lo hago por que quiero, puedo …
˃ No utilizar el framework ni los helpers, etc.
» Si en tu proyecto lo necesitas, seguramente
alguien más también lo necesitó en el suyo
˃ La comunidad es gigante y hay de todo. Úsala! (activeadmin)
class AdminController < ApplicationController
layout "admin"
def index
@models = {}
@tables = {}
if current_member.try(:admin?)
ActiveRecord::Base.send(:descendants).each do |c|
begin
model= Object.const_get(c.name)
@models[c.name] = {:columns=>model.column_names}
@tables[c.name] = c.name.tableize.singularize
rescue Exception=>e
puts "Error #{e}"
end
end
end
end
» Yo lo hago por que quiero, puedo …
˃ No utilizar el framework ni los helpers, etc.
» Si en tu proyecto lo necesitas, seguramente
alguien más también lo necesitó en el suyo
˃ La comunidad es gigante y hay de todo. Úsala!
» Querer tener toda la lógica en una “capa” de
negocios, en vez de “regada” en los modelos
» Yo lo hago por que quiero, puedo …
˃ No utilizar el framework ni los helpers, etc.
» Si en tu proyecto lo necesitas, seguramente
alguien más también lo necesitó en el suyo
˃ La comunidad es gigante y hay de todo. Úsala!
» Querer tener toda la lógica en una “capa” de
negocios, en vez de “regada” en los modelos
http://css.dzone.com/news/mvc-fat-models-and-skinny
Las que yo he utilizado y visto, pero…
¿Cuáles son las que ustedes han utilizado y recomiendan?
Las que yo he utilizado y visto, pero…
¿Cuáles son las que ustedes han utilizado y recomiendan?
» http://backgroundrb.rubyforge.org/
» https://github.com/collectiveidea/delayed_job
» https://github.com/collectiveidea/delayed_job
Gemfile:
gem 'delayed_job'
gem 'delayed_paperclip'
class Photo < ActiveRecord::Base
has_attached_file :photo,
:styles => {:thumb => "50x50#"},
:convert_options => { :thumb => '-quality 80 -strip'},
:storage => :s3
process_in_background :photo
def post_to_fb
# Logic to post to fb
end
handle_asynchronously :post_to_fb
» DJ (en Heroku)
» Ventajas:
˃ Acceso a todo el ambiente
» Desventajas
˃ Ocupan tu espacio (RAM) y tiempo de operación (Costo por operación
de los workers)
» http://www.iron.io/
» Iron.io (en Heroku)
» Ventajas:
˃ El procesamiento y espacio de operación no son de tu hosting
˃ Vista gráfica de los workers con su estado y logs
» Desventajas
˃ No tiene acceso a tu ambiente
+ Pero se pueden cargar o hacerle merge de lo que sea necesario
˃ No tiene acceso a tu base de datos (¿alguien sabe si con el ultimo cambio
de postgres 9 en heroku ya se puede?)
˃ Hay que hacer un pedido http para cargar el worker
» http://www.iron.io/
class MailEventCreatedWorker < IronWorker::Base
merge_gem 'actionmailer',{:require=>'action_mailer'}
merge_mailer '../mailers/event_invitation'
attr_accessor :subject, :message, :name, :url, :to
def run
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => "smtp.sendgrid.net",
:port => '25',
:domain => “DOMAIN",
:authentication => :plain,
:user_name => “USER_NAME",
:password => “PASS"
}
EventInvitation.event_created_async(subject, message, name, url, to).deliver!
end
end
» https://github.com/defunkt/resque
» Resque
» Ventajas?
» Desventajas?
» http://mperham.github.com/sidekiq/
Usa threads en vez de forks
» Sidekiq
» Ventajas?
» Desventajas?
» http://hirefireapp.com/
» Hirefire
» Ventajas
˃ Costo muy barato en heroku
˃ Puede subir y bajar el número de workers según la carga del servidor
˃ Apaga los workers (los pone en 0) cuando no hay tareas asincrónicas
˃ Funciona con resque y dj
» Desventajas
˃ Cobran
˃ El rendimiento de la aplicación parece sufrir un poco (según foros)
˃ Hay muchos issues (github).
Yo comparto mis donuts con los más necesitados
La Plataforma
Ambiente de Desarrollo
Herramientas de Dev
Ambiente de Desarrollo
En producción
Invitación desarrollo
Desarrollarla en conjunto como un
proyecto Open Source
github.com/carloshlopez/consonrisas
carlos@consonrisas.org
facebook.com/consonrisas
twitter.com/consonrisas (@consonrisas)
vimeo.com/consonrisas
www.consonrisas.org

Mais conteúdo relacionado

Mais procurados

Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -IntroducciónOscar Josué Uh Pérez
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCarlos Azaustre
 
Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsSergio Gil
 
Hack2Progress - Desarrollando una aplicación web con AngularJS
Hack2Progress - Desarrollando una aplicación web con AngularJSHack2Progress - Desarrollando una aplicación web con AngularJS
Hack2Progress - Desarrollando una aplicación web con AngularJSCarlos Azaustre
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsVisual Engineering
 
Login social con node.js
Login social con node.jsLogin social con node.js
Login social con node.jsCarlos Azaustre
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJSCarlos Azaustre
 
Monkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersMonkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersJavier Suárez Ruiz
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework SymfonyAlejandro Hernández
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Nelson Rojas Núñez
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web modernoSebastián Rocco
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsJavier Suárez Ruiz
 
Manual Tutorial Javascript Con Ejemplos
Manual Tutorial Javascript Con EjemplosManual Tutorial Javascript Con Ejemplos
Manual Tutorial Javascript Con EjemplosSteven Gomez
 
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.FormsdotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.FormsJavier Suárez Ruiz
 
SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000Javier Suárez Ruiz
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Oscar Gensollen
 
Uso de html5 + webcomponents
Uso de html5 + webcomponentsUso de html5 + webcomponents
Uso de html5 + webcomponentsAvanet
 

Mais procurados (20)

Curso de HTML5
Curso de HTML5Curso de HTML5
Curso de HTML5
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -Introducción
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de Platzi
 
Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on Rails
 
Hack2Progress - Desarrollando una aplicación web con AngularJS
Hack2Progress - Desarrollando una aplicación web con AngularJSHack2Progress - Desarrollando una aplicación web con AngularJS
Hack2Progress - Desarrollando una aplicación web con AngularJS
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page Applications
 
Login social con node.js
Login social con node.jsLogin social con node.js
Login social con node.js
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJS
 
Monkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersMonkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI Handlers
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework Symfony
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web moderno
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.Forms
 
Manual Tutorial Javascript Con Ejemplos
Manual Tutorial Javascript Con EjemplosManual Tutorial Javascript Con Ejemplos
Manual Tutorial Javascript Con Ejemplos
 
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.FormsdotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
 
Charla ie
Charla ieCharla ie
Charla ie
 
SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000
 
Tips aspnet
Tips aspnetTips aspnet
Tips aspnet
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5
 
Uso de html5 + webcomponents
Uso de html5 + webcomponentsUso de html5 + webcomponents
Uso de html5 + webcomponents
 

Semelhante a Hola RoR

Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007JuancaPompilla
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryDavid Arango
 
Mobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloMobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloSoftware Guru
 
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
 
Lecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialLecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialRoberto Luis Bisbé
 
Prácticas recomendadas para SQL Server en Microsoft Azure
Prácticas recomendadas para SQL Server en Microsoft AzurePrácticas recomendadas para SQL Server en Microsoft Azure
Prácticas recomendadas para SQL Server en Microsoft AzureSpanishPASSVC
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)lenny
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)INSIGNIA4U
 
Reactvolution
ReactvolutionReactvolution
Reactvolution_Lagash
 
AWSPeru Meetup marzo - introduccion a elastic containers seervice
AWSPeru Meetup marzo - introduccion a elastic containers seervice AWSPeru Meetup marzo - introduccion a elastic containers seervice
AWSPeru Meetup marzo - introduccion a elastic containers seervice Raul Hugo
 
Defensa proyecto fin de carrera
Defensa proyecto fin de carreraDefensa proyecto fin de carrera
Defensa proyecto fin de carreraBorja Merino
 
Administrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBAAdministrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBASpanishPASSVC
 
vOpenvOpenUy: El misterioso CQRS
vOpenvOpenUy: El misterioso CQRSvOpenvOpenUy: El misterioso CQRS
vOpenvOpenUy: El misterioso CQRSfernando sonego
 
Sistema integrado
Sistema integradoSistema integrado
Sistema integradobruchsytem
 

Semelhante a Hola RoR (20)

Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQuery
 
Mobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloMobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vuelo
 
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
 
Metadata api en apex
Metadata api en apexMetadata api en apex
Metadata api en apex
 
Lecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialLecciones aprendidas creando una red social
Lecciones aprendidas creando una red social
 
Prácticas recomendadas para SQL Server en Microsoft Azure
Prácticas recomendadas para SQL Server en Microsoft AzurePrácticas recomendadas para SQL Server en Microsoft Azure
Prácticas recomendadas para SQL Server en Microsoft Azure
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
Reactvolution
ReactvolutionReactvolution
Reactvolution
 
FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017
 
AWSPeru Meetup marzo - introduccion a elastic containers seervice
AWSPeru Meetup marzo - introduccion a elastic containers seervice AWSPeru Meetup marzo - introduccion a elastic containers seervice
AWSPeru Meetup marzo - introduccion a elastic containers seervice
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Web2 Quiensomos
Web2 QuiensomosWeb2 Quiensomos
Web2 Quiensomos
 
Defensa proyecto fin de carrera
Defensa proyecto fin de carreraDefensa proyecto fin de carrera
Defensa proyecto fin de carrera
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Desarrollo con stack MEAN
Desarrollo con stack MEANDesarrollo con stack MEAN
Desarrollo con stack MEAN
 
Administrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBAAdministrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBA
 
vOpenvOpenUy: El misterioso CQRS
vOpenvOpenUy: El misterioso CQRSvOpenvOpenUy: El misterioso CQRS
vOpenvOpenUy: El misterioso CQRS
 
Sistema integrado
Sistema integradoSistema integrado
Sistema integrado
 

Último

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxgustavovasquezv56
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...solanocortezluisalfr
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfaxelv9257
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...axelv9257
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 

Último (14)

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 

Hola RoR

  • 1. Mi experiencia generando sonrisas con magia … y con Ruby on Rails
  • 2. Llenamos de magia y alegría los corazones de los colombianos haciendo y apoyando eventos sociales
  • 3.
  • 4.
  • 5.
  • 7.
  • 8.
  • 10. » Agradable Sorpresa » Un comando lo hace todo (rails new app) ˃ Crea capas de datos, negocio y presentación!
  • 11. » Agradable Sorpresa » Un comando lo hace todo (rails new app) ˃ Crea capas de datos, negocio y presentación! » No hay que echar SQL! 
  • 12. » Agradable Sorpresa » Un comando lo hace todo (rails new app) ˃ Crea capas de datos, negocio y presentación! » No hay que echar SQL!  » No hay que hacer los CRUDS! 
  • 13. » Agradable Sorpresa » Un comando lo hace todo (rails new app) ˃ Crea capas de datos, negocio y presentación! » No hay que echar SQL!  » No hay que hacer los CRUDS!  » Hasta crea ambientes diferentes ˃ Desarrollo, Pruebas, Producción
  • 14. » Agradable Sorpresa » Un comando lo hace todo (rails new app) ˃ Crea capas de datos, negocio y presentación! » No hay que echar SQL!  » No hay que hacer los CRUDS!  » Hasta crea ambientes diferentes ˃ Desarrollo, Pruebas, Producción » rails s -> localhost:3000
  • 15. » Agradable Sorpresa » Un comando lo hace todo (rails new app) ˃ Crea capas de datos, negocio y presentación! » No hay que echar SQL!  » No hay que hacer los CRUDS!  » Hasta crea ambientes diferentes ˃ Desarrollo, Pruebas, Producción » rails s -> localhost:3000 » RoR es open source que sí (me) funciona
  • 16. ¿Cómo se migra el pensamiento para programar en un framework MVC? RoR
  • 18.
  • 19. Ruby • The Book of ruby • The Ruby Developer’s guide Rails • Agile Web Development with Rails • Why’s (poignant) guide to ruby • Advanced Rails Recipes
  • 20. » Yo lo hago por que quiero, puedo … ˃ No utilizar el framework ni los helpers, etc.
  • 21. » Yo lo hago por que quiero, puedo … ˃ No utilizar el framework ni los helpers, etc. class EventAdmin < ActiveRecord::Base belongs_to :member belongs_to :event validates :event_id, :presence => true, :uniqueness => {:scope => :member_id} scope :owners, where(:is_owner => true, :active => true) end
  • 22. » Yo lo hago por que quiero, puedo … ˃ No utilizar el framework ni los helpers, etc. » Si en tu proyecto lo necesitas, seguramente alguien más también lo necesitó en el suyo ˃ La comunidad es gigante y hay de todo. Úsala!
  • 23. » Yo lo hago por que quiero, puedo … ˃ No utilizar el framework ni los helpers, etc. » Si en tu proyecto lo necesitas, seguramente alguien más también lo necesitó en el suyo ˃ La comunidad es gigante y hay de todo. Úsala! (activeadmin) class AdminController < ApplicationController layout "admin" def index @models = {} @tables = {} if current_member.try(:admin?) ActiveRecord::Base.send(:descendants).each do |c| begin model= Object.const_get(c.name) @models[c.name] = {:columns=>model.column_names} @tables[c.name] = c.name.tableize.singularize rescue Exception=>e puts "Error #{e}" end end end end
  • 24. » Yo lo hago por que quiero, puedo … ˃ No utilizar el framework ni los helpers, etc. » Si en tu proyecto lo necesitas, seguramente alguien más también lo necesitó en el suyo ˃ La comunidad es gigante y hay de todo. Úsala! » Querer tener toda la lógica en una “capa” de negocios, en vez de “regada” en los modelos
  • 25. » Yo lo hago por que quiero, puedo … ˃ No utilizar el framework ni los helpers, etc. » Si en tu proyecto lo necesitas, seguramente alguien más también lo necesitó en el suyo ˃ La comunidad es gigante y hay de todo. Úsala! » Querer tener toda la lógica en una “capa” de negocios, en vez de “regada” en los modelos http://css.dzone.com/news/mvc-fat-models-and-skinny
  • 26. Las que yo he utilizado y visto, pero… ¿Cuáles son las que ustedes han utilizado y recomiendan?
  • 27. Las que yo he utilizado y visto, pero… ¿Cuáles son las que ustedes han utilizado y recomiendan?
  • 30. » https://github.com/collectiveidea/delayed_job Gemfile: gem 'delayed_job' gem 'delayed_paperclip' class Photo < ActiveRecord::Base has_attached_file :photo, :styles => {:thumb => "50x50#"}, :convert_options => { :thumb => '-quality 80 -strip'}, :storage => :s3 process_in_background :photo def post_to_fb # Logic to post to fb end handle_asynchronously :post_to_fb
  • 31. » DJ (en Heroku) » Ventajas: ˃ Acceso a todo el ambiente » Desventajas ˃ Ocupan tu espacio (RAM) y tiempo de operación (Costo por operación de los workers)
  • 33. » Iron.io (en Heroku) » Ventajas: ˃ El procesamiento y espacio de operación no son de tu hosting ˃ Vista gráfica de los workers con su estado y logs » Desventajas ˃ No tiene acceso a tu ambiente + Pero se pueden cargar o hacerle merge de lo que sea necesario ˃ No tiene acceso a tu base de datos (¿alguien sabe si con el ultimo cambio de postgres 9 en heroku ya se puede?) ˃ Hay que hacer un pedido http para cargar el worker
  • 34. » http://www.iron.io/ class MailEventCreatedWorker < IronWorker::Base merge_gem 'actionmailer',{:require=>'action_mailer'} merge_mailer '../mailers/event_invitation' attr_accessor :subject, :message, :name, :url, :to def run ActionMailer::Base.delivery_method = :smtp ActionMailer::Base.smtp_settings = { :address => "smtp.sendgrid.net", :port => '25', :domain => “DOMAIN", :authentication => :plain, :user_name => “USER_NAME", :password => “PASS" } EventInvitation.event_created_async(subject, message, name, url, to).deliver! end end
  • 40. » Hirefire » Ventajas ˃ Costo muy barato en heroku ˃ Puede subir y bajar el número de workers según la carga del servidor ˃ Apaga los workers (los pone en 0) cuando no hay tareas asincrónicas ˃ Funciona con resque y dj » Desventajas ˃ Cobran ˃ El rendimiento de la aplicación parece sufrir un poco (según foros) ˃ Hay muchos issues (github).
  • 41.
  • 42. Yo comparto mis donuts con los más necesitados
  • 46. Invitación desarrollo Desarrollarla en conjunto como un proyecto Open Source github.com/carloshlopez/consonrisas