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
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
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).