Class: Ashiba::Configuration
- Inherits:
-
Object
- Object
- Ashiba::Configuration
- Defined in:
- lib/ashiba/configuration.rb
Overview
Class loading and representing all configuration data independent of chosen templates
Instance Attribute Summary collapse
-
#settings ⇒ Hashie::Mash
Loaded settings.
Instance Method Summary collapse
-
#initialize ⇒ Configuration
constructor
Initialize class.
-
#load ⇒ Hash
Recurse over possible locations for configuration and stack found values.
-
#locations ⇒ Array
Return all locations to look for configuration files.
-
#process_config(file) ⇒ void
Load values from stated file and merge over previously loaded data, allowing stacking of global + personal configuration.
Constructor Details
#initialize ⇒ Configuration
Initialize class
14 15 16 |
# File 'lib/ashiba/configuration.rb', line 14 def initialize @settings = Hashie::Mash.new end |
Instance Attribute Details
#settings ⇒ Hashie::Mash
Loaded settings
10 11 12 |
# File 'lib/ashiba/configuration.rb', line 10 def settings @settings end |
Instance Method Details
#load ⇒ Hash
Recurse over possible locations for configuration and stack found values
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/ashiba/configuration.rb', line 54 def load $logger.info('Loading configuration') locations.each do |config| $logger.debug("Checking for configuration at #{config}") next unless File.file?(config) process_config(config) end $logger.debug('Evaluated configuration as:') @settings.each { |k, v| $logger.debug(" Setting #{k} to #{v}") } @settings.to_hash # @todo just for compatibility with old codebase end |
#locations ⇒ Array
Return all locations to look for configuration files.
21 22 23 24 25 26 |
# File 'lib/ashiba/configuration.rb', line 21 def locations [ '/etc/ashiba/fashibarc', "#{ENV['HOME']}/.ashibarc" ] end |
#process_config(file) ⇒ void
This method returns an undefined value.
Load values from stated file and merge over previously loaded data, allowing stacking of global + personal configuration
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/ashiba/configuration.rb', line 33 def process_config(file) $logger.debug("Processing user configuraton file #{file}") begin contents = ::YAML.load_file(file) rescue Errno::ENOENT => e puts e. rescue ::YAML::SyntaxError => e puts e. end new_settings = Hashie::Mash.new(contents) new_settings.each { |k, v| $logger.debug(" Setting #{k} to #{v}") } @settings.deep_merge!(new_settings) end |