namespace :maktoub do
desc "send :newsletter to the configured from address" task :test, [:newsletter] => [:environment] do |t, args| if Maktoub::NewsletterMailer.method_defined? :delay Maktoub::NewsletterMailer.delay(:priority => 5, :queue => 'maktoub').publish(args[:newsletter], :email => Maktoub.from, :name => 'Tester') puts "delayed #{Maktoub.from}" else Maktoub::NewsletterMailer.publish(args[:newsletter], :email => Maktoub.from, :name => 'Joe Tester').deliver puts "delivered #{Maktoub.from}" end end desc "send :newsletter to all subscribers" task :mail, [:newsletter] => [:environment] do |t, args| puts "starting..." messages = Maktoub.subscribers.map do |u| if Maktoub::NewsletterMailer.method_defined? :delay Maktoub::NewsletterMailer.delay(:priority => 5, :queue => 'maktoub').publish(args[:newsletter], :email => u.send(Maktoub.email_field), :name => u.send(Maktoub.name_field)) "delayed #{u.send Maktoub.email_field}" else Maktoub::NewsletterMailer.publish(args[:newsletter], :email => u.send(Maktoub.email_field), :name => u.send(Maktoub.name_field)).deliver "delivered #{u.send Maktoub.email_field}" end end puts "#{messages.length} messages" puts messages.join("\n") end
end