load_specs (Gem::SpecFetcher)

    # File lib/rubygems/spec_fetcher.rb, line 211
      def load_specs(source_uri, file)
        file_name  = "#{file}.#{Gem.marshal_version}"
        spec_path  = source_uri + "#{file_name}.gz"
        cache_dir  = cache_dir spec_path
        local_file = File.join(cache_dir, file_name)
        loaded     = false

        if File.exist? local_file then
          spec_dump = @fetcher.fetch_path spec_path, File.mtime(local_file)

          if spec_dump.nil? then
            spec_dump = Gem.read_binary local_file
          else
            loaded = true
          end
        else
          spec_dump = @fetcher.fetch_path spec_path
          loaded = true
        end

        specs = begin
                  Marshal.load spec_dump
                rescue ArgumentError
                  spec_dump = @fetcher.fetch_path spec_path
                  loaded = true

                  Marshal.load spec_dump
                end

        if loaded and @update_cache then
          begin
            FileUtils.mkdir_p cache_dir

            open local_file, 'wb' do |io|
              Marshal.dump specs, io
            end
          rescue
          end
        end

        specs
      end