|
Project Information
|
Sending email can be a bottleneck in your Rails app. Here's a dead simple way of making all your mail be delivered asynchronously. With the plugin installed, all mail send from Mailer gets put into a table called QueuedMails. Here's my migration to add that table: class AddQueuedMailTable < ActiveRecord::Migration
def self.up
create_table :queued_mails do |t|
t.column :object, :text
t.column :mailer, :string
end
end
def self.down
drop_table :queued_mails
end
endNow everytime you call YouMailer.deliver_something(*params) that mail object will be stored in the QueuedMails table. Just periodically call script/runner from a cron job to process your new mail queue: "script/runner 'MailQueue.process' -e production" If you want to bypass the queue just called the deliver_method_name with an exclamation point at the end. Like: YouMailer.deliver_something!(*params) WARNING: This feature to bypass the queue isn't the same way it was done in the original release of this plugin, so it isn't backwards compatible. Not a huge thing to change, and it probably wasn't a very popular thing used by people using this plugin anyways. Nate, Inkling Inc., http://www.inklingmarkets.com |