class GroongaQueryLog::Command::RunRegressionTest::MailNotifier

Public Class Methods

new(options) click to toggle source
# File lib/groonga-query-log/command/run-regression-test.rb, line 991
def initialize(options)
  @options = options
end

Public Instance Methods

notify_finished(success, report) click to toggle source
# File lib/groonga-query-log/command/run-regression-test.rb, line 1003
def notify_finished(success, report)
  return unless @options[:mail_to]

  if success
    subject = @options[:mail_subject_on_success]
    return if @options[:mail_only_on_failure]
  else
    subject = @options[:mail_subject_on_failure]
  end
  send_mail(subject, report)
end
notify_started() click to toggle source
# File lib/groonga-query-log/command/run-regression-test.rb, line 995
def notify_started
  return unless @options[:mail_to]
  return if @options[:mail_only_on_failure]

  subject = @options[:mail_subject_on_start]
  send_mail(subject, "")
end

Private Instance Methods

send_mail(subject, content) click to toggle source
# File lib/groonga-query-log/command/run-regression-test.rb, line 1016
        def send_mail(subject, content)
          header = <<-HEADER
MIME-Version: 1.0
X-Mailer: groonga-query-log test reporter #{VERSION};
  https://github.com/groonga/groonga-query-log
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
From: #{@options[:mail_from]}
To: #{@options[:mail_to]}
Subject: #{subject}
Date: #{Time.now.rfc2822}
          HEADER

          mail = <<-MAIL.gsub(/\r?\n/, "\r\n")
#{header}
#{content}
          MAIL
          smtp = Net::SMTP.new(@options[:smtp_server], @options[:smtp_port])
          smtp.enable_starttls if @options[:smtp_starttls]
          smtp.start(@options[:smtp_server],
                     @options[:smtp_auth_user],
                     @options[:smtp_auth_password]) do
            smtp.send_message(mail, @options[:mail_from], @options[:mail_to])
          end
        end