in gitlab_rb_loader.rb [89:130]
def initialize(rb_file_path, cfg_ctx = nil)
@gitlab_rb_config = {}
b = binding
method_names = %w[external_url roles git_data_dirs pages_external_url]
gitlab_rb_config_text = File.read(rb_file_path)
var_names = gitlab_rb_config_text.scan(/^\s*([a-z0-9A-Z_]+)\s*\[/).flatten.uniq.reject do |vn|
method_names.include?(vn)
end
var_names.each { |vn| eval("#{vn} = Hash.new", b, __FILE__, __LINE__) }
cfg_ctx&.vars_each do |n, v|
eval("#{n} = #{v}", b, __FILE__, __LINE__)
end
b.eval("nginx['status'] = {'options' => Hash.new }") if var_names.include?('nginx')
b.eval("patroni['postgresql'] = Hash.new ") if var_names.include?('patroni')
eval(gitlab_rb_config_text, b)
var_names.each { |vn| @gitlab_rb_config[vn] = eval(vn, b) }
cfg = JSON.parse(@gitlab_rb_config.to_json).transform_keys(&:to_s)
@flat_hash = generate_flat(cfg)
end