Class MailSenderWorker
In: lib/workers/mail_sender_worker.rb
Parent: BackgrounDRb::Worker::RailsBase

Put your code that runs your task inside the do_work method it will be run automatically in a thread. You have access to all of your rails models. You also get logger and results method inside of this class by default.

Methods

deliver   do_work   post  

Constants

HTTP_REQUEST_HOST = "localhost"
HTTP_REQUEST_PORT = 3000

Public Instance methods

メール履歴から取り出し配送に回す。

[Source]

    # File lib/workers/mail_sender_worker.rb, line 44
44:   def deliver(mail_history_id)
45:     if mail_history = MailHistory.find(mail_history_id)
46:       return mail_history.deliver
47:     end
48:   end

Worker としての既定のエントリポイント usage:

  MiddleMan.new_worker(:class => :mail_sender_worker, :args => {:post => [queue.id, path]})

or

  MiddleMan.new_worker(:class => :mail_sender_worker, :args => {:deliver => [mail_history_1.id, mail_history_2.id]})

[Source]

    # File lib/workers/mail_sender_worker.rb, line 14
14:   def do_work(args)
15:     # This method is called in it's own new thread when you
16:     # call new worker. args is set to :args
17:     if args.key?(:post)
18:       unless post(*args[:post])
19:         logger.error("ERROR: MailSenderWorker: no mail delivered")
20:       end
21:       return
22:     elsif args.key?(:deliver)
23:       args[:deliver].each do |mail_history_id|
24:         deliver(mail_history_id)
25:       end
26:     end
27:   end

メールキューから取り出し配送に回す。

[Source]

    # File lib/workers/mail_sender_worker.rb, line 30
30:   def post(mail_queue_id, path)
31:     queue = MailQueue.find(mail_queue_id, :include => [ :product, :from ])
32:     if queue.processed?
33:       logger.warn { "WARN: MailQueue #{queue.id} was already processed." }
34:       return false
35:     end
36:     require "net/http"
37:     http = Net::HTTP.new(HTTP_REQUEST_HOST, HTTP_REQUEST_PORT)
38:     req = Net::HTTP::Get.new(path)
39:     res = http.request(req)
40:     return res
41:   end

[Validate]