views:

102

answers:

1

What exactly would be the best way to go about using a cron task to send daily e-mails of updates to all users on my network? The e-mail would be made up of different information from multiple models.

I want to do something like "1 new friend requests : name ..." from the request model and user model and "There are 3 upcoming events from your friends: event name hosted by name..." from the event and user model.

I realize this is a common task but I didn't see much information on it, so any general tips about doing something like this would be greatly appreciated!

Side note: I will be using the Heroku daily cron plug-in to accomplish this if that matters (although I don't think it should).

+1  A: 

I usually just write a rake task and add it to CRON.

The rake task will look like this:

namespace :notifications do
  desc "Sends notifications"
  task :send => :environment do
    MyModel.all_users_to_notify.each do |u|
      MyMailer.notification(u).deliver
    end
  end
end

And your crontab should look like this:

RAILS_ENV=production
HOME=/path/to/your/rails/app
PATH=/path/to/ruby/binaries

30 17 * * * rake notifications:send
Fábio Batista