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

deliver(mail_history_id)

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

[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

do_work(args)

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

post(mail_queue_id, path)

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

[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]