Sha256: 1191ac2ef32b649436569dca40c6b5884590c04cdbd2ba2aeab8ab56d4f78c9a

Contents?: true

Size: 996 Bytes

Versions: 1

Compression:

Stored size: 996 Bytes

Contents

require 'tempfile'
require 'stringio'

module WickedPdf
  class Tempfile < ::Tempfile
    def initialize(filename, temp_dir = nil)
      temp_dir ||= Dir.tmpdir
      extension = File.extname(filename)
      basename = File.basename(filename, extension)
      super([basename, extension], temp_dir)
    end

    def write_in_chunks(input_string)
      binmode
      string_io = StringIO.new(input_string)
      write(string_io.read(chunk_size)) until string_io.eof?
      close
      self
    rescue Errno::EINVAL => e
      raise e, file_too_large_message
    end

    def read_in_chunks
      rewind
      binmode
      output_string = ''
      output_string << read(chunk_size) until eof?
      output_string
    rescue Errno::EINVAL => e
      raise e, file_too_large_message
    end

    private

    def chunk_size
      1024 * 1024
    end

    def file_too_large_message
      'The HTML file is too large! Try reducing the size or using the return_file option instead.'
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
adzap-wicked_pdf-2.0.0.beta5 lib/wicked_pdf/tempfile.rb