如何在Rails中预编译pdf资产?

时间:2018-08-08 10:02:54

标签: ruby-on-rails ruby-on-rails-3 asset-pipeline

在Rails 3.2.11应用程序中,我试图将应用程序发布到Heroku。

在资产文件夹中,我有一个pdf子文件夹,里面有一些pdf文件。

在我的production.rb文件中,添加了以下内容:

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  )

如果我在控制台上检查pdf资产路径,则会得到:

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"
# ]

但是当我跑步

rake assets:precompile RAILS_ENV=production

所有内容都已预编译,但pdf文件存在,在Heroku上的生产应用中,出现以下错误:

ActionView::Template::Error (ricerca_wg.pdf isn't precompiled):

2 个答案:

答案 0 :(得分:3)

我不认为pdf必须是“预编译”的。

如果您只想从应用程序访问pdf,而不使用其他服务(例如S3),则可以将该pdf文件夹放在rails应用程序的公用文件夹中,它们将作为静态文件在应用程序上提供。

www.domain.com/pdf/ricerca_wg.pdf

只需确保public / pdf文件夹不在gitignore中,并且它可以正常工作。

答案 1 :(得分:2)

我相信ricerca_wg.pdf/Users/Augusto/Sites/wisegrowth/app/assets/pdf/下吗?如果没有,只需

  • 删除config.assets.precompile += %w( ricerca_wg.pdf )
  • ricerca_wg.pdf移动到/Users/Augusto/Sites/wisegrowth/app/assets/pdf/下-应该与该目录中的其他pdf文件一起对其进行预编译