Class: SitemapGenerator::FileAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/sitemap_generator/adapters/file_adapter.rb

Overview

Class for writing out data to a file.

Instance Method Summary collapse

Instance Method Details

#gzip(stream, data) ⇒ Object

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



32
33
34
35
36
# File 'lib/sitemap_generator/adapters/file_adapter.rb', line 32

def gzip(stream, data)
  gz = Zlib::GzipWriter.new(stream)
  gz.write data
  gz.close
end

#plain(stream, data) ⇒ Object

Write ‘data` to a stream as is.



39
40
41
42
# File 'lib/sitemap_generator/adapters/file_adapter.rb', line 39

def plain(stream, data)
  stream.write data
  stream.close
end

#write(location, raw_data) ⇒ Object

Write data to a file.

Parameters:

  • 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.

  • raw_data
    • data to write to the file.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/sitemap_generator/adapters/file_adapter.rb', line 13

def write(location, raw_data)
  # Ensure that the directory exists
  dir = location.directory
  if !File.exist?(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