Method: ContentData::ContentData#to_file_old

Defined in:
lib/content_data/content_data.rb

#to_file_old(filename) ⇒ Object

Deprecated.

DEPRECATED: Old deprecated from/to file methods still needed for migration purposes Write content data to file. Write is using chunks (for both content chunks and instances chunks) Chunk is used to maximize GC affect. The temporary memory of each chunk is GCed. Without the chunks used in a dipper stack level, GC keeps the temporary objects as part of the stack context.



399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
# File 'lib/content_data/content_data.rb', line 399

def to_file_old(filename)
  content_data_dir = File.dirname(filename)
  FileUtils.makedirs(content_data_dir) unless File.directory?(content_data_dir)
  File.open(filename, 'w') { |file|
    # Write contents
    file.write("#{@contents_info.length}\n")
    contents_enum = @contents_info.each_key
    content_chunks = @contents_info.length / CHUNK_SIZE + 1
    chunks_counter = 0
    while chunks_counter < content_chunks
      to_old_file_contents_chunk(file,contents_enum, CHUNK_SIZE)
      GC.start
      chunks_counter += 1
    end

    # Write instances
    file.write("#{@instances_info.length}\n")
    contents_enum = @contents_info.each_key
    chunks_counter = 0
    while chunks_counter < content_chunks
      to_old_file_instances_chunk(file,contents_enum, CHUNK_SIZE)
      GC.start
      chunks_counter += 1
    end

    # Write symlinks
    symlinks_info_enum = @symlinks_info.each_key
    file.write("#{@symlinks_info.length}\n")
    loop {
      symlink_key = symlinks_info_enum.next rescue break
      file.write("#{symlink_key[0]},#{symlink_key[1]},#{@symlinks_info[symlink_key]}\n")
    }
  }
end