Hey all. I''m creating an app that that involves sending emails at a specified date-time. I only have one model and it has a "sendat" (:datetime) column. I need to send an email to an email address (also in the model) at the "sendat" time. I''m not sure how to do this. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Oct 6, 2007, at 16:31 , David wrote:> I need to send an email to an email address (also in the > model) at the "sendat" time.Run a script/runner via cron job that checks for emails that need to be sent and sends them. I''m thinking something along the lines of "send emails with sendat < now that haven''t been sent". Michael Glaesemann grzm seespotcode net --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Heres my method in my Item model: *** def self.send_expired items = Item.find(:all, :conditions => ["time <= ?", Time.now]) for item in items email = item.email content = item.content time = item.time.strftime("%b %d %I:%M %p") begin Notifier.deliver_item_email(email, content, time) rescue Exception => e logger.error("Error: e.message") else Item.find(item.id).destroy end end end ** Here''s my Notifier class: ** class Notifier < ActionMailer::Base def item_email(email,content,time) recipients email from "notifier-t1rxLZ7CIXjQT0dZR+AlfA@public.gmane.org" subject "You are being notified!" body :content => content, :time => time end end ** Basically, the self.send_expired method grabs all the Item objects that have a time column before the current time, sends the item via email, and deletes it from the db. The first time I ran "script/runner -e development ''Item.send_expired''" it worked fine and it sent all the items that had expired. I then created another item object that had a time 5 minutes after I saved it to the db. When that time passed (in other words, when the item "expired"), no email was sent and the item remained in the db. I guess script/runner only called the ''send_expired'' method when I started it. I guess I don''t really understand how script/runner works. I thought it continuously calls the function, so as soon as an item expires, it is sent via email and destroyed. Could someone please explain? ~ David On Oct 6, 5:38 pm, Michael Glaesemann <g...-RYEyMNgfJnVLeUupdtUFmg@public.gmane.org> wrote:> On Oct 6, 2007, at 16:31 , David wrote: > > > I need to send an email to an email address (also in the > > model) at the "sendat" time. > > Run ascript/runnervia cron job that checks for emails that need to > be sent and sends them. I''m thinking something along the lines of > "send emails with sendat < now that haven''t been sent". > > Michael Glaesemann > grzm seespotcode net--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 10/11/07, David <junksmart-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I guess I don''t really understand how script/runner works. I thought > it continuously calls the function, so as soon as an item expires, it > is sent via email and destroyed. Could someone please explain?No, script/runner just runs your code once and then exits. It doesn''t do anything magic. Michael suggested you run script/runner periodically from cron (every 5 minutes, or whatever frequency you need). I think that''s the best solution. You could also make your runner script check for mails, then sleep for a while, then check again, in an endless loop. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---