class SitemapGenerator::FileAdapter

Class for writing out data to a file.

Public Instance Methods

gzip(stream, data) click to toggle source

Write `data` to a stream, passing the data through a GzipWriter to compress it.

# File lib/sitemap_generator/adapters/file_adapter.rb, line 31
def gzip(stream, data)
  gz = Zlib::GzipWriter.new(stream)
  gz.write data
  gz.close
end
plain(stream, data) click to toggle source

Write `data` to a stream as is.

# File lib/sitemap_generator/adapters/file_adapter.rb, line 38
def plain(stream, data)
  stream.write data
  stream.close
end
write(location, raw_data) click to toggle source

Write data to a file. @param location - File object giving the full path and file name of the file.

If the location specifies a directory(ies) which does not exist, the directory(ies)
will be created for you.  If the location path ends with `.gz` the data will be
compressed prior to being written out.  Otherwise the data will be written out
unchanged.

@param raw_data - data to write to the file.

# File lib/sitemap_generator/adapters/file_adapter.rb, line 12
def write(location, raw_data)
  # Ensure that the directory exists
  dir = location.directory
  if !File.exists?(dir)
    FileUtils.mkdir_p(dir)
  elsif !File.directory?(dir)
    raise SitemapError.new("#{dir} should be a directory!")
  end

  stream = open(location.path, 'wb')
  if location.path.to_s =~ /.gz$/
    gzip(stream, raw_data)
  else
    plain(stream, raw_data)
  end
end