Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to precompile a pdf asset in Rails?

In Rails 3.2.11 app I'm trying to publish my app to Heroku.

In the assets folder I have a pdf subfolder with some pdf files inside.

In my production.rb file I have added the following:

config.assets.precompile += %w[*.png *.jpg *.jpeg *.gif *.pdf]
config.assets.precompile += ["*.js"]
config.assets.precompile += ["*.css"]
config.assets.precompile += ['pdf/*']
config.assets.precompile += %w( ricerca_wg.pdf  )

If I check the pdf assets paths on my console I get:

Rails.application.config.assets.paths
# [
#   "/Users/Augusto/Sites/wisegrowth/app/assets/images",
#   "/Users/Augusto/Sites/wisegrowth/app/assets/javascripts",
#   "/Users/Augusto/Sites/wisegrowth/app/assets/pdf",
#   "/Users/Augusto/Sites/wisegrowth/app/assets/stylesheets",
#   "/Users/Augusto/Sites/wisegrowth/vendor/assets/javascripts",
#   "/Users/Augusto/Sites/wisegrowth/vendor/assets/stylesheets",
#   "/Users/Augusto/.rvm/gems/ruby-1.9.3-p551/gems/jquery-rails-2.3.0/vendor/assets/javascripts",
#   "/Users/Augusto/.rvm/gems/ruby-1.9.3-p551/gems/coffee-rails-3.2.2/lib/assets/javascripts",
#   "/Users/Augusto/.rvm/gems/ruby-1.9.3-p551/gems/formtastic-2.1.1/app/assets/stylesheets"
# ]

But when I run

rake assets:precompile RAILS_ENV=production

everything is precompiled BUT the pdf files and in my production app on Heroku I get the following error:

ActionView::Template::Error (ricerca_wg.pdf isn't precompiled):
like image 542
Augusto Avatar asked Aug 08 '18 10:08

Augusto


People also ask

How do you Precompile rails assets?

To compile your assets locally, run the assets:precompile task locally on your app. Make sure to use the production environment so that the production version of your assets are generated. A public/assets directory will be created. Inside this directory you'll find a manifest.

What is assets Precompile?

rails assets:precompile is the task that does the compilation (concatenation, minification, and preprocessing). When the task is run, Rails first looks at the files in the config.assets.precompile array. By default, this array includes application.js and application.css .

What does rake assets Clean do?

Two cleanup tasks: rake assets:clean is now a safe cleanup that only removes older assets that are no longer used, while rake assets:clobber nukes the entire public/assets directory. The clean task allows for rolling deploys that may still be linking to an old asset while the new assets are being built.


2 Answers

I don't think a pdf must be "precompiled".

if you just want to access the pdf from your app without using another service like S3, you can just put that pdf folder on your public folder of the rails app, and they will be available on the app as an static file.

www.domain.com/pdf/ricerca_wg.pdf

just be sure that the public/pdf folder isn't in the gitignore and it must work.

like image 182
xploshioOn Avatar answered Oct 13 '22 00:10

xploshioOn


I believe the ricerca_wg.pdf is under /Users/Augusto/Sites/wisegrowth/app/assets/pdf/? If not, simply

  • remove config.assets.precompile += %w( ricerca_wg.pdf )
  • move ricerca_wg.pdf under /Users/Augusto/Sites/wisegrowth/app/assets/pdf/ - it should be precompiled along with other pdf files from this directory
like image 33
Andrey Deineko Avatar answered Oct 13 '22 01:10

Andrey Deineko