Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
An email queue that actually works
Ruby
Tree: fe8f92dd19

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
generators/mq
lib
tasks
test
MIT-LICENSE
README.textile
Rakefile
init.rb
install.rb
mq.gemspec
uninstall.rb

README.textile

mq

A Rails gem that generates an MVC stack that does email queuing

What it does

mq is a generator that generates an MVC stack for queuing emails. It has a UI too.
I got tired of dealing with crappy email queuing systems in Rails, so I wrote my own.

Requirements

None.

How to Install

sudo gem install mdarby-mq -s http://gems.github.com

How to Use

Assuming you’d like to name your mq table “Email”, and your Mailer model is named “Notifier”

Generate the files necessary for your app:

./script/generate mq Email Notifier

mq requires your Mailer methods accept an email address as its first parameter, so a Mailer method should look like:

Notifier.send_email_method(email_address)

Of course, you can pass as many parameters as you’d like:

Notifier.send_email_method(email_address, some_object, some_other_object, …)

Queue an email by calling Email.queue with the name of your Notifier method as the first parameter, and the recipient email address as the second parameter, followed by anything else you’d like to pass.

Email.queue(:send_email_method, “matt@matt-darby.com”)

Delivery of queued email

You can create a cronjob (this on runs every five minutes)

*/5 * * * * cd /path/to/your/app && ./script/runner/Email.deliver_all

How to Test

Complete Rspec specs are included automatically. Well, complete aside from view specs as you’ll just change the damned things anyway.

About the Author

My name is Matt Darby. I’m the Lead Web Developer and IT Manager at Dynamix Engineering and hold a Master’s Degree in Computer Science from Franklin University in Columbus, OH.

Feel free to check out my blog or to recommend me

Something went wrong with that request. Please try again.