lib/slack_messaging/config.rb in slack_messaging-1.0.1 vs lib/slack_messaging/config.rb in slack_messaging-1.1.0

- old
+ new

@@ -1,16 +1,10 @@ require 'yaml' +require 'hashie' module SlackMessaging - module PrivateAttrAccessor - def private_attr_accessor(*names) - private - attr_accessor *names - end - end - class DefaultPaths class << self def config File.join(self.home,'.slack_messaging.yml') end @@ -20,72 +14,35 @@ end end end class Config - - CONFIG_DEFAULTS = {} - class << self - extend PrivateAttrAccessor - private_attr_accessor :config_data def config - CONFIG_DEFAULTS.merge data + config_data.to_hash end def load(path) load_config(path) config end - def set_config_options(opts = {}) - data.merge! opts - config + def config_data + @config_data ||= Hashie::Mash.new end + private :config_data - def data - self.config_data ||= {} - end - private :data - - def default_value(key) - CONFIG_DEFAULTS[key.to_sym] - end - private :default_value - def method_missing(method, args=false) - return data[method] if data[method] - return default_value(method) if default_value(method) - nil + config_data.send(method, args) end private :method_missing def load_config(file) raise MissingConfig, "Missing configuration file: #{file}" unless File.exist?(file) - self.config_data = symbolize_keys(YAML.load_file(file)) rescue {} + YAML.load_file(file).each{ |key,value| config_data.assign_property(key, value) } end private :load_config - # We want all ouf our YAML loaded keys to be symbols - # taken from http://devblog.avdi.org/2009/07/14/recursively-symbolize-keys/ - def symbolize_keys(hash) - hash.inject({}){|result, (key, value)| - new_key = case key - when String then key.to_sym - else key - end - new_value = case value - when Hash then symbolize_keys(value) - else value - end - result[new_key] = new_value - result - } - end - private :symbolize_keys - end - - MissingConfig = Class.new(StandardError) end end