Hola RoR

518 views

Published on

Mi experiencia de encontrarme con RoR viniendo de un mundo .NET, errores comunes, y diferentes formas de manejar tareas asincrónicas.

Published in: Technology
2 Comments
1 Like
Statistics
Notes
No Downloads
Views
Total views
518
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
2
Comments
2
Likes
1
Embeds 0
No embeds

No notes for slide

Hola RoR

  1. 1. Mi experiencia generando sonrisas con magia … y con Ruby on Rails Carlos H. López @mentor12 carlos@consonrisas.org
  2. 2. Llenamos de magia y alegría los corazones de los colombianoshaciendo y apoyando eventos sociales
  3. 3. VoluntarioTrabajo social
  4. 4. » Agradable Sorpresa
  5. 5. » Agradable Sorpresa» Un comando lo hace todo (rails new app) ˃ Crea capas de datos, negocio y presentación!
  6. 6. » Agradable Sorpresa» Un comando lo hace todo (rails new app) ˃ Crea capas de datos, negocio y presentación!» No hay que echar SQL! 
  7. 7. » 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! 
  8. 8. » 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
  9. 9. » 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
  10. 10. » 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
  11. 11. ¿Cómo se migra el pensamiento para programar en unframework MVC? RoR
  12. 12. http://www.codeproject.com/Articles/36847/Three-Layer-Architecture-in-C-NET
  13. 13. Ruby• The Book of ruby• The Ruby Developer’s guideRails• Agile Web Development with Rails• Why’s (poignant) guide to ruby• Advanced Rails Recipes
  14. 14. » Yo lo hago por que quiero, puedo … ˃ No utilizar el framework ni los helpers, etc.
  15. 15. » 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
  16. 16. » 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!
  17. 17. class AdminController < ApplicationController layout "admin" def index lo hago por que quiero, puedo … » Yo ˃ = utilizar el framework ni los helpers, etc. @models No{} @tables = {} tu proyecto lo necesitas, seguramente » Si en if current_member.try(:admin?)lo necesitó en el suyo alguien más también ActiveRecord::Base.send(:descendants).each do |c| ˃ La comunidad es gigante y hay de todo. Úsala! (activeadmin) 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
  18. 18. » 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
  19. 19. » 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
  20. 20. Las que yo he utilizado y visto, pero…¿Cuáles son las que ustedes han utilizado y recomiendan?
  21. 21. Las que yo he utilizado y visto, pero…¿Cuáles son las que ustedes han utilizado y recomiendan?
  22. 22. » http://backgroundrb.rubyforge.org/
  23. 23. » https://github.com/collectiveidea/delayed_job
  24. 24. Gemfile: » https://github.com/collectiveidea/delayed_jobgem delayed_jobgem delayed_paperclipclass Photo < ActiveRecord::Base has_attached_file :photo, :styles => {:thumb => "50x50#"}, :convert_options => { :thumb => -quality 80 -strip}, :storage => :s3 process_in_background :photodef post_to_fb # Logic to post to fbend handle_asynchronously :post_to_fb
  25. 25. » 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)
  26. 26. » http://www.iron.io/
  27. 27. » 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
  28. 28. class MailEventCreatedWorker < IronWorker::Base » http://www.iron.io/ 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! endend
  29. 29. » https://github.com/defunkt/resque
  30. 30. » Resque» Ventajas?» Desventajas?
  31. 31. » http://mperham.github.com/sidekiq/ Usa threads en vez de forks
  32. 32. » Sidekiq» Ventajas?» Desventajas?
  33. 33. » http://hirefireapp.com/
  34. 34. » 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).
  35. 35. Yo comparto mis donuts con los más necesitados
  36. 36. La Plataforma Ambiente de Desarrollo
  37. 37. Herramientas de Dev Ambiente de Desarrollo
  38. 38. En producción
  39. 39. Invitación desarrollo Desarrollarla en conjunto como un proyecto Open Sourcegithub.com/carloshlopez/consonrisas
  40. 40. carlos@consonrisas.orgtwitter.com/consonrisas (@consonrisas)facebook.com/consonrisasvimeo.com/consonrisas www.consonrisas.org

×