class AppConfig
Constants
- CONFIG_BASE_NAME
- VERSION
Attributes
config_file_name[R]
config_files[R]
deploy_config_dir[R]
dist_config_dir[R]
global_config_dir[R]
platform_config_file_name[R]
user_config_dir[R]
Public Class Methods
app_name()
click to toggle source
# File lib/appconf.rb, line 54 def self.app_name @@app_raw_name end
get_config(config_name = nil, config_dir = nil)
click to toggle source
# File lib/appconf.rb, line 57 def self.get_config config_name = nil, config_dir = nil raise ConfigError, ('please call %s::setup() before getting a config instance' % self.name) if @@app_name.nil? self.new config_name, config_dir end
new(config_name = nil, config_dir = nil)
click to toggle source
# File lib/appconf.rb, line 92 def initialize(config_name = nil, config_dir = nil) raise ArgumentError, 'specified config directory `%s\' does not exist'%config_dir if config_dir && !File.exist?(config_dir) @base_name = config_name || @@app_name @deploy_config_dir = config_dir || @@deploy_config_dir @deploy_config_dir = nil if config_dir && config_dir.length == 0 @deploy_config_dir = File.expand_path(@deploy_config_dir) if @deploy_config_dir @config_file_name = '%s.%s.yaml' % [@base_name, CONFIG_BASE_NAME] @platform_config_file_name = '%s.%s.%s.yaml' % [@base_name, RUBY_PLATFORM, CONFIG_BASE_NAME] @dist_config_dir = File.join @@app_root_dir, CONFIG_BASE_NAME @global_config_dir = sys_config_dir @user_config_dir = usr_config_dir @config_files = [] reload end
setup(app_name, app_root_dir, deploy_conf_dir = nil)
click to toggle source
# File lib/appconf.rb, line 40 def self.setup(app_name, app_root_dir, deploy_conf_dir = nil) raise ArgumentError, 'app name cannot be empty' if app_name.nil? or app_name.length == 0 raise ArgumentError, 'app root directory not specified' if app_root_dir.nil? or app_root_dir.length == 0 raise ArgumentError, 'app root directory does not exist or not a directory' unless File.directory?(app_root_dir) @@app_raw_name = app_name @@app_name = app_name.downcase @@app_root_dir = File.expand_path(app_root_dir) raise ArgumentError, 'deploy config directory does not exist or not a directory' if deploy_conf_dir && !File.directory?(deploy_conf_dir) @@deploy_config_dir = deploy_conf_dir or ENV[@@app_name.upcase + '_CONF_DIR'] raise ConfigError, 'config directory `%s\' specifed by environment does not exist or not a directory' % @@deploy_config_dir if @@deploy_config_dir && !File.directory?(@@deploy_config_dir) end
Public Instance Methods
[](key)
click to toggle source
# File lib/appconf.rb, line 62 def [] key @deploy_platform_config.path_lookup(key) || @deploy_config.path_lookup(key) || @user_platform_config.path_lookup(key) || @user_config.path_lookup(key) || @global_platform_config.path_lookup(key) || @global_config.path_lookup(key) || @dist_platform_config.path_lookup(key) || @dist_config.path_lookup(key) end
reload()
click to toggle source
# File lib/appconf.rb, line 73 def reload @deploy_platform_config = deploy_platform_config || {} @deploy_config = deploy_config || {} @user_platform_config = user_platform_config || {} @user_config = user_config || {} @global_platform_config = global_platform_config || {} @global_config = global_config || {} @dist_platform_config = dist_platform_config || {} @dist_config = dist_config || {} end
Private Instance Methods
deploy_config()
click to toggle source
# File lib/appconf.rb, line 159 def deploy_config return nil if @deploy_config_dir.nil? file_path = File.join @deploy_config_dir, @config_file_name if file_path && File.file?(file_path) @config_files << file_path return load_yaml_file(file_path) end nil end
deploy_platform_config()
click to toggle source
# File lib/appconf.rb, line 168 def deploy_platform_config return nil if @deploy_config_dir.nil? file_path = File.join @deploy_config_dir, @platform_config_file_name if file_path && File.file?(file_path) @config_files << file_path return load_yaml_file(file_path) end nil end
dist_config()
click to toggle source
# File lib/appconf.rb, line 111 def dist_config file_path = File.join @dist_config_dir, @config_file_name if File.exist?(file_path) @config_files << file_path return load_yaml_file file_path end nil end
dist_platform_config()
click to toggle source
# File lib/appconf.rb, line 119 def dist_platform_config file_path = File.join @dist_config_dir, @platform_config_file_name if File.exist?(file_path) @config_files << file_path return load_yaml_file file_path end nil end
global_config()
click to toggle source
# File lib/appconf.rb, line 127 def global_config file_path = File.join @global_config_dir, @config_file_name if File.exist?(file_path) @config_files << file_path return load_yaml_file file_path end nil end
global_platform_config()
click to toggle source
# File lib/appconf.rb, line 135 def global_platform_config file_path = File.join @global_config_dir, @platform_config_file_name if File.exist?(file_path) @config_files << file_path return load_yaml_file file_path end nil end
load_yaml_file(file_path)
click to toggle source
# File lib/appconf.rb, line 178 def load_yaml_file(file_path) YAML.load(IO.read(file_path)) if File.file?(file_path) end
sys_config_dir()
click to toggle source
# File lib/appconf.rb, line 182 def sys_config_dir if ENV['OS'] == 'Windows_NT' dir = File.join(ENV['ALLUSERSPROFILE'], 'Application Data', @@app_name) else dir = File.join('/etc', @@app_name) end return File.expand_path(dir) end
user_config()
click to toggle source
# File lib/appconf.rb, line 143 def user_config file_path = File.join @user_config_dir, @config_file_name if File.exist?(file_path) @config_files << file_path return load_yaml_file file_path end nil end
user_platform_config()
click to toggle source
# File lib/appconf.rb, line 151 def user_platform_config file_path = File.join @user_config_dir, @platform_config_file_name if File.exist?(file_path) @config_files << file_path return load_yaml_file file_path end nil end
usr_config_dir()
click to toggle source
# File lib/appconf.rb, line 190 def usr_config_dir if ENV['OS'] == 'Windows_NT' dir = File.join(ENV['USERPROFILE'], @@app_name) else dir = File.join(ENV['HOME'], '.' + @@app_name) end return File.expand_path(dir) end