【发布时间】:2018-01-30 01:49:52
【问题描述】:
当使用 webpack、webpacker gem 和 Rails 5.1 时,我注意到第一次运行 rspec 会生成 public/ packs 和 public/packs-test。
- 这些目录有什么用?
- 两者有什么区别?
- 是否应该通过版本控制对其进行跟踪?
【问题讨论】:
标签: ruby-on-rails webpack
当使用 webpack、webpacker gem 和 Rails 5.1 时,我注意到第一次运行 rspec 会生成 public/ packs 和 public/packs-test。
【问题讨论】:
标签: ruby-on-rails webpack
Rails 中的/public 文件夹是预编译资源用于静态分发的位置(也就是在服务器启动时编译一次,因此它们不会在每次页面加载时都编译)。这是Rails asset pipeline 的一项功能,可帮助加快资产分发速度,因此 Rails 不必自己为它们服务。
注意webpacker 资产如何放置在/app/assets 目录中的packs 文件夹中。这些包将被预编译并放置到/public/packs 文件夹中,这些预编译包将在页面请求期间从中获取和提供服务。
/public/packs-test 文件夹是测试环境包将被预编译到的位置。您可以在 config/webpacker.yml 文件中配置每个环境的预编译包的位置。
至于是否通过版本控制来跟踪这些文件,这取决于您 — 通常在部署到生产环境时需要做什么是后勤问题。来自官方 Ruby on Rails 指南:
您可能希望在本地预编译资产有几个原因。其中有:
- 您可能没有生产文件系统的写入权限。
- 您可能要部署到多个服务器,并希望避免重复工作。
- 您可能经常进行不包括资产更改的部署。
本地编译允许您将编译后的文件提交到源代码管理中,并正常部署。
See the official Ruby on Rails Guide section 4.2 on Local Precompilation 了解更多原因(或为什么不)您想要预编译并将生成的文件提交到版本控制中。
【讨论】: