class RuboCop::Daemon::Cache

Public Class Methods

acquire_lock() { |flock_result != false| ... } click to toggle source
# File lib/rubocop/daemon/cache.rb, line 60
def acquire_lock
  lock_file = File.open(lock_path, File::CREAT)
  # flock returns 0 if successful, and false if not.
  flock_result = lock_file.flock(File::LOCK_EX | File::LOCK_NB)
  yield flock_result != false
ensure
  lock_file.flock(File::LOCK_UN)
  lock_file.close
end
dir() click to toggle source
# File lib/rubocop/daemon/cache.rb, line 27
def dir
  cache_path = File.expand_path('~/.cache/rubocop-daemon')
  Pathname.new(File.join(cache_path, project_dir_cache_key)).tap do |d|
    d.mkpath unless d.exist?
  end
end
lock_path() click to toggle source
# File lib/rubocop/daemon/cache.rb, line 46
def lock_path
  dir.join('lock')
end
pid_path() click to toggle source
# File lib/rubocop/daemon/cache.rb, line 42
def pid_path
  dir.join('pid')
end
pid_running?() click to toggle source
# File lib/rubocop/daemon/cache.rb, line 54
def pid_running?
  Process.kill(0, pid_path.read.to_i) == 1
rescue Errno::ESRCH
  false
end
port_path() click to toggle source
# File lib/rubocop/daemon/cache.rb, line 34
def port_path
  dir.join('port')
end
project_dir() click to toggle source

Searches for Gemfile or gems.rb in the current dir or any parent dirs

# File lib/rubocop/daemon/cache.rb, line 10
def project_dir
  current_dir = Dir.pwd
  while current_dir != '/'
    return current_dir if %w[Gemfile gems.rb].any? do |gemfile|
      File.exist?(File.join(current_dir, gemfile))
    end

    current_dir = File.expand_path('..', current_dir)
  end
  # If we can't find a Gemfile, just use the current directory
  Dir.pwd
end
project_dir_cache_key() click to toggle source
# File lib/rubocop/daemon/cache.rb, line 23
def project_dir_cache_key
  @project_dir_cache_key ||= project_dir[1..-1].tr('/', '+')
end
status_path() click to toggle source
# File lib/rubocop/daemon/cache.rb, line 50
def status_path
  dir.join('status')
end
token_path() click to toggle source
# File lib/rubocop/daemon/cache.rb, line 38
def token_path
  dir.join('token')
end
write_pid_file() { || ... } click to toggle source
# File lib/rubocop/daemon/cache.rb, line 75
def write_pid_file
  pid_path.write(Process.pid)
  yield
ensure
  dir.rmtree
end
write_port_and_token_files(port:, token:) click to toggle source
# File lib/rubocop/daemon/cache.rb, line 70
def write_port_and_token_files(port:, token:)
  port_path.write(port)
  token_path.write(token)
end
write_status_file(status) click to toggle source
# File lib/rubocop/daemon/cache.rb, line 82
def write_status_file(status)
  status_path.write(status)
end