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