Thanks for the reply Chris! I wanted to make sure I had someone double check my thinking. I'll check out that gem.
I appreciate it, Drew On Sunday, October 12, 2014 11:28:46 AM UTC-7, Chris McCann wrote: > > Drew, > > Since you can't control the user closing their browser and thus killing > your Ajax implementation for long-running timers the server-side solution > is the only way to go. > > A cron job is a reasonable solution. As you pointed out, if you want no > more than 5 minutes of latency between when a timer goes over the limit and > an email is sent then you have to run the cron job every 5 minutes. > > Depending on how resource-intensive the search for overdue timers is you > could probably get away with executing the cron job every minute instead. > This will depend on how you've got your database or other persistence > setup. You clearly don't want to run a job every minute that takes 2 > minutes to run! > > Another approach would be to fire off a background job like DelayedJob to > monitor a particular timer. You could tell it to run at some time in the > future, say, the timer expiration time. The DJ job would just check to see > if it's particular timer had been stopped, and if not, send the email. > > This keeps all the logic in your app. If you have potentially thousands > of timers running concurrently having all those DJ threads running might > get expensive but it's probably worth considering. Anyone with more > experience in background jobs should pipe in here! > > For the weekly report, yes, a cron job absolutely makes the most sense. > > FYI, there's a cool little gem called "whenever" that I use to manage cron > jobs from within a Rails app: https://github.com/javan/whenever > > Cheers, and good luck! > > Chris > > On Sunday, October 12, 2014 10:05:14 AM UTC-7, Andrew Haines wrote: >> >> Hi everyone, >> >> This is Drew Haines from DevCo <http://dmdevco.com/>. I am working on a >> web app called HoursLogger.com and want a second opinion on how to >> automate the emails for my Rails app. >> >> >> Hours Logger is a time tracking applications and currently sends 2 >> automated emails: >> 1. When a user's timer runs too long, it sends an email fix their >> timer >> 2. At the end of the week, it emails the user their weekly report >> >> >> *1. Timer Runs Too Long* >> Currently, the timer application runs on the client side. When the timer >> runs over the set time limit, an AJAX request is sent to the server to send >> the email. This is a problem because the app has to be open in the user's >> browser to fire the email, which isn't that helpful. So ... I need a way >> to track when a user's timer goes over their limit, *on the server*. >> >> I was thinking implement with cron job. >> - When a user starts the timer, use AJAX to save the start time in >> the database >> - Run a cron job that checks if any users have a start time, but no >> stop time >> - If they do, see if (now - time started) is longer than their limit >> - Send the email >> >> I am pretty sure I can make this work but is it a waste of resources? >> I would need a cron job constantly (every 5 minutes) monitor user's >> start and stop times. >> Is there a better way to implement? >> >> >> *2. Weekly Report* >> Cron job for sure on the weekly report. >> >> >> If you agree/ disagree please tell me. I wanted to kick around ideas >> with others on the community because 2 heads are better than 1. ( And an >> internet forum is even better than that! ) >> >> I appreciate any comments. >> Drew Haines >> >> >> >> -- -- SD Ruby mailing list [email protected] http://groups.google.com/group/sdruby --- You received this message because you are subscribed to the Google Groups "SD Ruby" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
