Sha256: 33e4e23a0412143549cf66235558e64b157e32ec45fb05146f5407ea7363c9c4

Contents?: true

Size: 1.04 KB

Versions: 20

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module SmtpMock
  class Server
    class Process
      SIGNULL = 0
      SIGKILL = 9
      SIGTERM = 15
      TMP_LOG_PATH = '../../../tmp/err_log'
      WARMUP_DELAY = 0.1

      class << self
        def create(command)
          pid = ::Process.spawn(command, err: err_log)
          ::Kernel.sleep(SmtpMock::Server::Process::WARMUP_DELAY)
          error_context = ::IO.readlines(err_log)[0]
          raise SmtpMock::Error::Server, error_context.strip if error_context
          pid
        end

        def alive?(pid)
          ::Process.kill(SmtpMock::Server::Process::SIGNULL, pid)
          true
        rescue ::Errno::ESRCH
          false
        end

        def kill(signal_number, pid)
          ::Process.detach(pid)
          ::Process.kill(signal_number, pid)
          true
        rescue ::Errno::ESRCH
          false
        end

        private

        def err_log
          @err_log ||= ::File.expand_path(SmtpMock::Server::Process::TMP_LOG_PATH, ::File.dirname(__FILE__))
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
smtp_mock-1.4.4 lib/smtp_mock/server/process.rb
smtp_mock-1.4.3 lib/smtp_mock/server/process.rb
smtp_mock-1.4.1 lib/smtp_mock/server/process.rb
smtp_mock-1.4.0 lib/smtp_mock/server/process.rb
smtp_mock-1.3.6 lib/smtp_mock/server/process.rb
smtp_mock-1.3.5 lib/smtp_mock/server/process.rb
smtp_mock-1.3.4 lib/smtp_mock/server/process.rb
smtp_mock-1.3.3 lib/smtp_mock/server/process.rb
smtp_mock-1.3.2 lib/smtp_mock/server/process.rb
smtp_mock-1.3.1 lib/smtp_mock/server/process.rb
smtp_mock-1.3.0 lib/smtp_mock/server/process.rb
smtp_mock-1.2.2 lib/smtp_mock/server/process.rb
smtp_mock-1.2.1 lib/smtp_mock/server/process.rb
smtp_mock-1.2.0 lib/smtp_mock/server/process.rb
smtp_mock-1.1.0 lib/smtp_mock/server/process.rb
smtp_mock-1.0.1 lib/smtp_mock/server/process.rb
smtp_mock-1.0.0 lib/smtp_mock/server/process.rb
smtp_mock-0.1.2 lib/smtp_mock/server/process.rb
smtp_mock-0.1.1 lib/smtp_mock/server/process.rb
smtp_mock-0.1.0 lib/smtp_mock/server/process.rb