Method: Sensu::Settings#load_file

Defined in:
lib/sensu/settings.rb

#load_file(file) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/sensu/settings.rb', line 80

def load_file(file)
  @logger.debug('loading config file', {
    :config_file => file
  })
  if File.file?(file) && File.readable?(file)
    begin
      contents = File.open(file, 'r').read
      config = Oj.load(contents, :mode => :strict)
      merged = deep_merge(@settings, config)
      unless @loaded_files.empty?
        changes = deep_diff(@settings, merged)
        @logger.warn('config file applied changes', {
          :config_file => file,
          :changes => redact_sensitive(changes)
        })
      end
      @settings = merged
      @indifferent_access = false
      @loaded_files << file
    rescue Oj::ParseError => error
      @logger.error('config file must be valid json', {
        :config_file => file,
        :error => error.to_s
      })
      @logger.warn('ignoring config file', {
        :config_file => file
      })
    end
  else
    @logger.error('config file does not exist or is not readable', {
      :config_file => file
    })
    @logger.warn('ignoring config file', {
      :config_file => file
    })
  end
end