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

How to precompile a pdf asset in Rails?

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

在 assets 文件夹中,我有一个 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):

我相信 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 文件一起预编译

我认为 pdf 不一定是 "precompiled"。

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

www.domain.com/pdf/ricerca_wg.pdf

只需确保 public/pdf 文件夹不在 gitignore 中并且它必须有效。