class RuboCop::Daemon::Server

Attributes

verbose[R]

Public Class Methods

new(verbose) click to toggle source
# File lib/rubocop/daemon/server.rb, line 16
def initialize(verbose)
  @verbose = verbose
end
token() click to toggle source
# File lib/rubocop/daemon/server.rb, line 12
def self.token
  @token ||= SecureRandom.hex(4)
end

Public Instance Methods

start(port) click to toggle source
# File lib/rubocop/daemon/server.rb, line 24
def start(port)
  require 'rubocop'
  start_server(port)
  Cache.write_port_and_token_files(port: @server.addr[1], token: token)
  Process.daemon(true) unless verbose
  Cache.write_pid_file do
    read_socket(@server.accept) until @server.closed?
  end
end
token() click to toggle source
# File lib/rubocop/daemon/server.rb, line 20
def token
  self.class.token
end

Private Instance Methods

read_socket(socket) click to toggle source
# File lib/rubocop/daemon/server.rb, line 41
def read_socket(socket)
  SocketReader.new(socket, verbose).read!
rescue InvalidTokenError
  socket.puts 'token is not valid.'
rescue ServerStopRequest
  @server.close
rescue UnknownServerCommandError => e
  socket.puts e.message
rescue Errno::EPIPE => e
  p e if verbose
rescue StandardError => e
  socket.puts e.full_message
ensure
  socket.close
end
start_server(port) click to toggle source
# File lib/rubocop/daemon/server.rb, line 36
def start_server(port)
  @server = TCPServer.open('127.0.0.1', port)
  puts "Server listen on port #{@server.addr[1]}" if verbose
end