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