require 'memcache' require 'yaml' module Spamotron mattr_accessor :config class << self def queue_server @@queue_server ||= MemCache.new config[:starling_host] end def queue(item) queue_server.set(config[:queue_name], item) rescue MemCache::MemCacheError reconnect! retry end def dequeue queue_server.get(config[:queue_name]) rescue MemCache::MemCacheError reconnect! retry end protected def reconnect! @@queue_server = MemCache.new config[:starling_host] end end end Spamotron.config = { :queue_name => 'spamotron', :starling_host => '127.0.0.1:22122', :pid_file => 'tmp/pids/spamotron.pid', :interval => 5 } class ActionMailer::Base include Spamotron::ActionMailer end