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

HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...Kevin Serna
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).jcaballerosamayoa
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .itzyrivera61103
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometriasofiasonder
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadaspqeilyn0827
 
Bloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas DistribuidosBloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas DistribuidosLuisAntonioLopezGome
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerRobertoCarrancioFern
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdffrank0071
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfMarianneBAyn
 
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptxjarniel1
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docxssusere34b451
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialEducática
 
taller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundariataller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundariaandresingsiseo
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxTaim11
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .
CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .
CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .llocllajoaquinci00
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf7adelosriosarangojua
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónAntonia Yamilet Perez Palomares
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxJohanna4222
 

Último (20)

HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadas
 
Bloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas DistribuidosBloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas Distribuidos
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL Server
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdf
 
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 
taller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundariataller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundaria
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .
CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .
CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..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