如何在 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
中并且它必须有效。
在 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
中并且它必须有效。