お知らせメールを配信したい。
Threadでやる
member = Member.find(:all) threads = [] cnt = 0 threads << Thread.new{ member.each do |m| email = i.email subject = replace( params[:mail][:subject], i ) body = replace( params[:mail][:body], i ) Mailer.deliver_bulletin(email, subject, body) if i.reception.to_i == 1 cnt =+ 1 end end threads.each { |t| t.join }
みたいにやると、ブラウザ閉じてもちゃんと全件飛ぶけど、終わるまで全員待たされる。
BackgrounDRbというやつがある。
はまったとこ
workerには一個しか引数渡せない。
workerには worker.async_post(:arg => args)の形で渡さないといけない[:arg]が決まりごと。。。