Sha256: 2a364cc100e107743ad9769ddb9b123ee4701ef7fafbf2b7869f08a633de1818
Contents?: true
Size: 1.16 KB
Versions: 1
Compression:
Stored size: 1.16 KB
Contents
require "objectify_config/version" require "yaml" module ObjectifyConfig class << self def configuration_files(*files) @configurations = files end def run @configurations.flatten.each do |config_file| config_klass_name = klass_name_for(config_file) temp_class = Class.new do singleton_class.class_eval do Object.const_set("CONFIG_FILE", config_file) def method_missing(key) configuration_keys[key.to_sym] end def configuration_keys file_contents = YAML.load_file(CONFIG_FILE) file_contents.each_with_object({}) do |(h,k), result| result[h.to_sym] = k end end end end Object.const_set(config_klass_name, temp_class) end end def klass_name_for(config_file) "#{Pathname.new(config_file).basename.to_s.split('.')[0].camelize}Config" end end end class String def camelize self.split('_').map {|w| w.capitalize}.join end end class Hash def method_missing(sym, *) fetch(sym) do fetch(sym.to_s){super} end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
objectify_config-0.1.0 | lib/objectify_config.rb |