cursame / cursame-rails

nueva versión de cursame mas fuerte mas bonita mas poderosa
4 stars 0 forks source link

Fix mass email for Admin #393

Closed isaacpompa closed 9 years ago

isaacpompa commented 9 years ago

Closes #389

emilianork commented 9 years ago

@isaacpompa creo que deberías de crear un worker que se encargue de enviar los emails de forma asíncrona. Por que como esta ahorita, si tienes 500 usuarios en una red, vas a encolar 500 trabajos pendientes en sidekiq, cuando lo ideal es que solo sea uno.

isaacpompa commented 9 years ago

@emilianork ya quedó con un solo Worker.

emilianork commented 9 years ago

@isaacpompa no veo como se manda de forma asíncrona con un Worker de Sidekiq. Según yo lo único que hiciste fue setear el logo.

babasbot commented 9 years ago

@emilianork tiene razón no hay ningún worker ni nada, revisa la documentación de sidekiq

isaacpompa commented 9 years ago

@emilianork hice rebase y las líneas quedaron igual. Como tal está en el ManagersController#mailer_deliver la línea empieza con current_network.delay

emilianork commented 9 years ago

@isaacpompa lo que usa esa linea es la gema delayed_jobs, en este link lo explican Queuing Jobs. Para usar Sidekiq debes de crear un worker en la carpeta app/wokers y este debe ser mandado a llamar de la siguiente forma SomeWorker.perform_async(args..)

isaacpompa commented 9 years ago

Falso @emilianork me basé en: http://blog.remarkablelabs.com/2013/01/using-sidekiq-to-send-emails-asynchronously

emilianork commented 9 years ago

@isaacpompa eso lo agrega Sidekiq por default a la clase ActionMailer::Base, ManagersController#mailer_deliver usa current_network.delay.send_email(...) donde current_network es una instancia de la clase Network.

Por otro lado, creo que la linea current_network.delay.send_email(..) falla por que borraste handle_asynchronously :send_email, priority: 20, run_at: Proc.new{Time.zone.now}, código que agrega el método send_mail a delay.

En el mismo link que me pasaste viene como hacer tests de eso. ¿Por que no los implementas?

babasbot commented 9 years ago

@isaacpompa: Ese mailer no esta listo para usar Sidekiq, no puedes pasar objetos complejos como parámetros. Revisa esta wiki: Best-Practices#1-make-your-job-parameters-small-and-simple

babasbot commented 9 years ago

@isaacpompa: No veo en ningún lado que uses los Delayed Extensions de Sidekiq, ¿Puedes hacer referencia donde están?

babasbot commented 9 years ago

@isaacpompa: implementa los tests que menciona @emilianork

isaacpompa commented 9 years ago

@babasbot implemento los test.

En la línea 47 de ManagersController#mailer_deliver

current_network.delay.send_email ...

@emilianork no faya si quito handle_asynchronously ...

babasbot commented 9 years ago

:+1: