class Nac::Config
The main configuration manager class
Attributes
source[R]
template[R]
Public Class Methods
new(source, options = {})
click to toggle source
# File lib/nac/config.rb, line 8 def initialize(source, options = {}) @source = source @template = (options[:template] || {}).to_yaml options[:init!] ? init! : init cache end
Public Instance Methods
get(keys = nil, default = nil)
click to toggle source
# File lib/nac/config.rb, line 24 def get(keys = nil, default = nil) return @cache unless keys val = @cache [keys].flatten.each do |key| val = val[key] end val rescue NoMethodError default end
init!()
click to toggle source
# File lib/nac/config.rb, line 16 def init! FileUtils.mkdir_p(File.dirname(@source)) File.open(@source, 'w+') do |file| file.write(@template) end end
set(keys, value)
click to toggle source
# File lib/nac/config.rb, line 38 def set(keys, value) @cache.merge!(bury(keys, value)) File.write(@source, @cache.to_yaml) cache! end
Private Instance Methods
bury(keys, value)
click to toggle source
# File lib/nac/config.rb, line 54 def bury(keys, value) hkeys = [keys].flatten.map { |k| { k => nil } } hkeys.count.times do |i| val = hkeys[i + 1] || value hkeys[i][hkeys[i].keys[0]] = val end hkeys.shift end
cache()
click to toggle source
# File lib/nac/config.rb, line 70 def cache @cache ||= YAML.load_file(@source) || {} end
cache!()
click to toggle source
# File lib/nac/config.rb, line 65 def cache! @cache = nil cache end
init()
click to toggle source
# File lib/nac/config.rb, line 48 def init return true if File.exist?(@source) init! end