lib/ruby-conf.rb in ruby-conf-2.6.3 vs lib/ruby-conf.rb in ruby-conf-2.6.4
- old
+ new
@@ -71,11 +71,17 @@
class Config
attr_reader :__rc_attributes, :__rc_parent, :__rc_name, :__rc_chains, :__rc_locked
def __rc_root() __rc_parent ? __rc_parent.__rc_root : self end
- def detach() @__rc_parent = nil; self end
+ def detach(parent = nil)
+ @__rc_parent = parent
+ @__rc_attributes.values.each do |child|
+ child.detach(self) if child.is_a?(Config)
+ end
+ self
+ end
def initialize(name = nil, parent = nil, &block)
@__rc_locked, @__rc_attributes, @__rc_chains, @__rc_parent = false, {}, [], parent
@__rc_name = name.to_sym if name
instance_eval(&block) if block_given?
@@ -266,10 +272,10 @@
end
if Loader::__rc_conf.nil? && (name.nil? || name.to_s =~ /^(?:Rails)?Conf/)
default_conf = if ::Object.const_defined?(:Rails)
cfg = config[:"#{::Rails.env}"] || config[:"#{::Rails.env}_conf"] || config[:"#{::Rails.env}_config"]
- cfg && cfg.detach || config
+ (cfg && cfg.detach) || config
else
config
end
Loader::__rc_set_conf(default_conf)
end