require 'yaml' class Configuration USERCONF_PATH = ENV['HOME'] + '/.mailshears.conf.yml' def initialize() cfg = self.default_configuration() # Now, load the user configuration which will override the # variables defined above. begin user_config = Config.new(YAML.load(File.open(USERCONF_PATH))) cfg.update!(user_config) rescue LoadError # If the user config file doesn't exist, whatever. end @dict = cfg end def method_missing(sym, *args) # Replace all missing method calls with dictionary lookups. return @dict[sym] end private; def default_configuration() d = {} d['i_mean_business'] = false d['dbhost'] = 'localhost' d['dbport'] = 5432 d['dbopts'] = '' d['dbtty'] = '' d['dbuser'] = 'postgres' d['dbpass'] = '' d['dbname'] = 'postfix' d['plugins'] = ['dovecot_mailstore', 'roundcube_db'] d['mail_root'] = '/var/spool/mail/vhosts' d['roundcube_dbhost'] = 'localhost' d['roundcube_dbport'] = 5432 d['roundcube_dbopts'] = '' d['roundcube_dbtty'] = '' d['roundcube_dbuser'] = 'postgres' d['roundcube_dbpass'] = '' d['roundcube_dbname'] = 'roundcube' return d end end