Class: Resolver

Inherits:
Object show all
Defined in:
lib/vagrant-dnsmasq/includes/Resolver.class.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dirname) ⇒ Resolver

Returns a new instance of Resolver.

Raises:

  • (ArgumentError)


5
6
7
8
9
# File 'lib/vagrant-dnsmasq/includes/Resolver.class.rb', line 5

def initialize(dirname)
  raise ArgumentError, 'wrong dirname' if dirname.blank?
  raise IOError unless Dir.exists? dirname
  @dirname = dirname
end

Instance Attribute Details

#dirnameObject (readonly)

Returns the value of attribute dirname.



3
4
5
# File 'lib/vagrant-dnsmasq/includes/Resolver.class.rb', line 3

def dirname
  @dirname
end

Class Method Details

.flush_cache!Object



11
12
13
# File 'lib/vagrant-dnsmasq/includes/Resolver.class.rb', line 11

def self.flush_cache!
  system 'sudo dscacheutil -flushcache'
end

Instance Method Details

#delete(domain) ⇒ Object

Raises:

  • (ArgumentError)


30
31
32
33
34
35
36
37
38
# File 'lib/vagrant-dnsmasq/includes/Resolver.class.rb', line 30

def delete(domain)
  raise ArgumentError, 'invalid domain instance' unless domain.is_a? Domain

  if includes? domain
    puts "You may be asked for your password to delete #{@dirname}/#{domain.name}"
    system("sudo rm -rf #{@dirname}/#{domain.name}")
    Resolver::flush_cache!
  end
end

#includes?(domain) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (ArgumentError)


40
41
42
43
44
# File 'lib/vagrant-dnsmasq/includes/Resolver.class.rb', line 40

def includes?(domain)
  raise ArgumentError, 'invalid domain instance' unless domain.is_a? Domain

  File.exists? "#{@dirname}/#{domain.name}"
end

#insert(domain, ip) ⇒ Object

Raises:

  • (ArgumentError)


19
20
21
22
23
24
25
26
27
28
# File 'lib/vagrant-dnsmasq/includes/Resolver.class.rb', line 19

def insert(domain, ip)
  raise ArgumentError, 'invalid domain instance' unless domain.is_a? Domain

  delete(domain) if includes?(domain)

  puts "You may be asked for your password to insert #{@dirname}/#{domain.name} (ip: #{ip})"
  system("sudo sh -c \"echo 'nameserver #{ip.v4}' >> #{@dirname}/#{domain.name}\"")
  Resolver::flush_cache!

end

#listObject



15
16
17
# File 'lib/vagrant-dnsmasq/includes/Resolver.class.rb', line 15

def list
  Dir["#{@dirname}/*"].map{|dir| '.' + File.basename(dir)}
end