Class RuntimeConfig
In: lib/taskjuggler/RuntimeConfig.rb
Parent: Object

The RuntimeConfig searches for a YAML config file in a list of directories. When a file is found it is read-in. The read-in config values are grouped in a tree of sections. The values of a section can then be used to overwrite the instance variable of a passed object.

Methods

configure   new  

Attributes

debugMode  [RW] 

Public Class methods

[Source]

# File lib/taskjuggler/RuntimeConfig.rb, line 24
  def initialize(appName, configFile = nil)
    @appName = appName
    @config = nil
    @debugMode = false

    if configFile
      # Read user specified config file.
      unless loadConfigFile(configFile)
        $stderr.puts "Config file #{configFile} not found!"
        exit 1
      end
    else
      # Search config files in certain directories.
      [ '.', ENV['HOME'], '/etc' ].each do |path|
        # Try UNIX style hidden file first, then .rc.
        [ "#{path}/.#{appName}rc", "#{path}/#{appName}.rc" ].each do |file|
          break if loadConfigFile(file)
        end
      end
    end
  end

Public Instance methods

[Source]

# File lib/taskjuggler/RuntimeConfig.rb, line 46
  def configure(object, section)
    debug("Configuring object of type #{object.class}")
    sections = section.split('.')
    p = @config
    sections.each do |sec|
      if p.nil? || !p.include?('_' + sec)
        debug("Section #{section} not found in config file")
        return false
      end
      p = p['_' + sec]
    end

    object.instance_variables.each do |iv|
      ivName = iv[1..-1]
      debug("Processing class variable #{ivName}")
      if p.include?(ivName)
        debug("Setting @#{ivName} to #{p[ivName]}")
        object.instance_variable_set(iv, p[ivName])
      end
    end

    true
  end

[Validate]