We are currently working on a Rails application hosted on Heroku. We are trying to generate a PDF and push it to the user to download.
We are using Prawn to handle the PDF generation.
Our code for generating the PDF is currently:
Prawn::Document.generate @name[0]+ ".pdf" do
Followed by all of our code to generate the document. Unfortunately, this saves the document to the disk which is not possible (to the best of my knowledge) for applications hosted on Heroku.
We then push it to the user using
send_file "#{Rails.root}/"+@name[0]+ ".pdf", :type =>
'application/pdf',:filename => @name[0]+ ".pdf"
Is there any way using Prawn to directly push the download of the document to the user without saving the document to disk first? If not, are there any other gems for generating PDFs that don’t require saving the file to the disk prior to sending the file?
On Aspen/Bamboo, you can save the file to disk in the
tmp/directory in your application directory (possiblyRails.root.join("tmp")) or any subdirectory.On Cedar, you can save the file to disk anywhere in your application directory, but you should still choose a subdirectory of your application’s
tmp/directory anyway.In either case, saved files are ephemeral. They are not shared between two running instances of your application; they are not kept between restarts; etc. Do not rely on saving the file in one request and then being able to access it in a second request.