Sha256: e595ef5dd960832457ab283fcdcadb0792cb38990d7dc6cfbf5a6da01a5a1bd0

Contents?: true

Size: 976 Bytes

Versions: 3

Compression:

Stored size: 976 Bytes

Contents

require 'tempfile'

class 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

3 entries across 3 versions & 1 rubygems

Version Path
wicked_pdf-2.6.3 lib/wicked_pdf/tempfile.rb
wicked_pdf-2.6.2 lib/wicked_pdf/tempfile.rb
wicked_pdf-2.6.0 lib/wicked_pdf/tempfile.rb