lib/ruby-conf.rb in ruby-conf-2.3.0 vs lib/ruby-conf.rb in ruby-conf-2.4.0

- old
+ new

@@ -1,8 +1,11 @@ # # # @author Hollin Wilkins & Curtis Schofield & Mason Bo-bay-son + +$RUBY_CONF = nil + module Magic attr_accessor :__rc_chain def __rc_gather() "#{to_s}#{__rc_chain.nil? ? "" : " #{__rc_chain.__rc_gather}"}" end end @@ -129,11 +132,11 @@ super || @__rc_attributes.key?(name) || @__rc_parent.respond_to?(name) end def __rc_build_string(depth = 0) str = "" - str += "[#@__rc_name]\n" unless @__rc_parent + str += "[#{@__rc_name || "CONFIG"}]\n" unless @__rc_parent str += "\n" @__rc_attributes.keys.map{|k| k.to_s }.sort.each do |key| value = self[key] str += " " * depth str += "#{key}:" @@ -143,11 +146,11 @@ str end def to_s() __rc_build_string end def to_str() to_s end - def __rc_build_inspect() "#{"[#@__rc_name] " unless @__rc_parent}#{@__rc_attributes.keys.map {|k| k.to_s }.sort.map { |key| "#{key}: #{self[key].is_a?(Config) ? "{ #{self[key].__rc_build_inspect} }" : self[key].inspect}" }.join(", ")}" end + def __rc_build_inspect() "#{"[#{@__rc_name || "CONFIG"}] " unless @__rc_parent}#{@__rc_attributes.keys.map {|k| k.to_s }.sort.map { |key| "#{key}: #{self[key].is_a?(Config) ? "{ #{self[key].__rc_build_inspect} }" : self[key].inspect}" }.join(", ")}" end def inspect() __rc_build_inspect end end def self.define(name = nil, options = {}, &block) config = Config.new(name, &block) @@ -156,14 +159,32 @@ const = options.fetch(:as, name) if const && const.to_s[/^[A-Z]/] const = const.to_sym ::Object.const_set(const, config) if !::Object.const_defined?(const) || ::Object.const_get(const).is_a?(Config) end + + if $RUBY_CONF.nil? && (name.nil? || name.to_s =~ /^(?:Rails)?Conf/) + $RUBY_CONF = if ::Object.const_defined?(:Rails) + cfg = config[:"#{::Rails.env}"] || config[:"#{::Rails.env}_conf"] || config[:"#{::Rails.env}_config"] + cfg && cfg.detach || config + else + config + end + end + config end def self.[](name) @@__rc_configs[name.to_sym] end def self.method_missing(name, *args) @@__rc_configs[name.to_sym] end def self.respond_to?(name) @@__rc_configs.key?(name.to_sym) end + + def self.clear() + $RUBY_CONF = nil + @@__rc_configs.keys.each do |config| + remove_const(config.to_sym) if config.to_s[/^[A-Z]/] && const_defined?(config.to_sym) + end + @@__rc_configs.clear + end end