Class: Stable::Services::HostsManager

Inherits:
Object
  • Object
show all
Defined in:
lib/stable/services/hosts_manager.rb

Overview

Service for managing hosts file entries

Class Method Summary collapse

Class Method Details

.add(domain) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/stable/services/hosts_manager.rb', line 28

def self.add(domain)
  hosts_file = hosts_file()
  entry = "127.0.0.1\t#{domain}\n"
  hosts = File.read(hosts_file)
  return if hosts.include?(domain)

  if Process.uid.zero?
    File.open(hosts_file, 'a') { |f| f.puts entry }
  else
    system(%(echo "#{entry}" | sudo tee -a #{hosts_file} > /dev/null))
  end
end

.hosts_fileObject



9
10
11
# File 'lib/stable/services/hosts_manager.rb', line 9

def self.hosts_file
  Stable::Utils::Platform.hosts_file
end

.remove(domain) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/stable/services/hosts_manager.rb', line 13

def self.remove(domain)
  hosts_file = hosts_file()
  lines = File.read(hosts_file).lines
  filtered = lines.reject { |l| l.include?(domain) }

  return if lines == filtered

  if Process.uid.zero?
    File.write(hosts_file, filtered.join)
  else
    File.write('/tmp/hosts', filtered.join)
    system("sudo mv /tmp/hosts #{hosts_file}")
  end
end