Merb Resque Mailer
Plugin for Merb which allows putting mail deliveries onto Resque queue.
Usage
Include Resque::Mailer module in your Merb::MailController subclass(es) like this:
class UserMailer < Merb::MailController
include Resque::Mailer
...
end
or directly in Merb::MailController class if you want to enable it for all mailers:
class Merb::MailController
include Resque::Mailer
...
end
Jobs are added to "mailer" queue so you should start at least one worker listening on "mailer" queue:
QUEUE=mailer rake merb_env resque:work
Be sure you have 'resque/tasks' required in your Rakefile (or somewhere in lib/tasks/), it's required for above task to work.
From now on all emails will be sent asynchronously using Resque worker(s).
Installation
Gem is hosted on gemcutter.org, simply install it by:
gem install merb_resque_mailer
and require it in your app (or just add it to bundler's Gemfile).
Configuration
You can configure for which environments you don't want to use Merb Resque Mailer by setting Resque::Mailer.excluded_environments option (by default :test env is excluded). If you want to exclude also :development env put following code somewhere in config/init.rb: Resque::Mailer.excluded_environments = [:test, :development]
or
Resque::Mailer.excluded_environments << :development
Credits
This piece of code was inspired by work of Nick Plante who created resque_mailer for Rails' ActionMailer. Rewritten to work with Merb Mailer by Marcin Kulik.