lib/wicked_pdf/tempfile.rb in adzap-wicked_pdf-2.0.0.beta3 vs lib/wicked_pdf/tempfile.rb in adzap-wicked_pdf-2.0.0.beta4

- old
+ new

@@ -1,13 +1,43 @@ require 'tempfile' +require 'stringio' -module WickedPdf - class Tempfile < Tempfile - # ensures the Tempfile's filename always keeps its extension +class WickedPdf + class Tempfile < ::Tempfile def initialize(filename, temp_dir = nil) temp_dir ||= Dir.tmpdir extension = File.extname(filename) - basename = File.basename(filename, extension) + 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