Sha256: 761c5f992eb715fe62d2da2357e570756bfc78797904d26687fb7b62f1e3dd0e
Contents?: true
Size: 1.97 KB
Versions: 2
Compression:
Stored size: 1.97 KB
Contents
require 'yaml' 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 def home ENV['HOME'] ? ENV['HOME'] : "." end end end class Config CONFIG_DEFAULTS = {} class << self extend PrivateAttrAccessor private_attr_accessor :config_data def config CONFIG_DEFAULTS.merge data end def load(path) load_config(path) config end def set_config_options(opts = {}) data.merge! opts config end 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 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 {} 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
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
slack_messaging-1.0.1 | lib/slack_messaging/config.rb |
slack_messaging-1.0.0 | lib/slack_messaging/config.rb |