initialize

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