new (Gem::ConfigFile)

    # File lib/rubygems/config_file.rb, line 59
      def initialize(arg_list)
        @config_file_name = nil
        need_config_file_name = false

        arg_list = arg_list.map do |arg|
          if need_config_file_name then
            @config_file_name = arg
            nil
          elsif arg =~ /^--config-file=(.*)/ then
            @config_file_name = $1
            nil
          elsif arg =~ /^--config-file$/ then
            need_config_file_name = true
            nil
          else
            arg
          end
        end.compact

        @backtrace = DEFAULT_BACKTRACE
        @benchmark = DEFAULT_BENCHMARK
        @bulk_threshold = DEFAULT_BULK_THRESHOLD
        @verbose = DEFAULT_VERBOSITY
        @update_sources = DEFAULT_UPDATE_SOURCES

        begin
          # HACK $SAFE ok?
          @hash = open(config_file_name.dup.untaint) {|f| YAML.load(f) }
        rescue ArgumentError
          warn "Failed to load #{config_file_name}"
        rescue Errno::ENOENT
          # Ignore missing config file error.
        rescue Errno::EACCES
          warn "Failed to load #{config_file_name} due to permissions problem."
        end

        @hash ||= {}

        # HACK these override command-line args, which is bad
        @backtrace = @hash[:backtrace] if @hash.key? :backtrace
        @benchmark = @hash[:benchmark] if @hash.key? :benchmark
        @bulk_threshold = @hash[:bulk_threshold] if @hash.key? :bulk_threshold
        Gem.sources.replace @hash[:sources] if @hash.key? :sources
        @verbose = @hash[:verbose] if @hash.key? :verbose
        @update_sources = @hash[:update_sources] if @hash.key? :update_sources

        handle_arguments arg_list
      end