class Tartarus::RemoteStorage::Glacier::CsvExport

Constants

DELIMITER
ENCODING
FILE_MODE
NO_PATH_FOR_EXPORT

Attributes

file_service[R]
file_utils[R]
storage_directory[R]

Public Class Methods

new(storage_directory, file_service: ::File, file_utils: FileUtils) click to toggle source
# File lib/tartarus/remote_storage/glacier/csv_export.rb, line 14
def initialize(storage_directory, file_service: ::File, file_utils: FileUtils)
  @storage_directory = storage_directory
  @file_service = file_service
  @file_utils = file_utils
end

Public Instance Methods

export(collection, path_to_file) click to toggle source
# File lib/tartarus/remote_storage/glacier/csv_export.rb, line 20
def export(collection, path_to_file)
  with_csv_export_file(path_to_file) do |file|
    collection.copy_to(NO_PATH_FOR_EXPORT, delimiter: DELIMITER) do |line|
      file.write(line.force_encoding(ENCODING))
    end
  end
end

Private Instance Methods

with_csv_export_file(path_to_file, &block) click to toggle source
# File lib/tartarus/remote_storage/glacier/csv_export.rb, line 30
def with_csv_export_file(path_to_file, &block)
  file_utils.mkdir_p(storage_directory) if !file_service.exist?(storage_directory)

  file_service.open(path_to_file, FILE_MODE, &block)
end