什么是公共/包和公共/包测试?

yba*_*kos 3 ruby-on-rails webpack

当使用webpack,webpacker gem和Rails 5.1时,我注意到第一次运行rspec会生成public/packspublic/packs-test.

  • 这些目录是什么?
  • 两者有什么区别?
  • 它们应该通过版本控制进行跟踪吗?

Zac*_*itu 6

/publicRails中的文件夹是预编译资产用于静态分发的地方(也就是在服务器启动时编译一次,因此它们不会在每个页面加载时编译).这是Rails资产管道的一个功能,可以帮助加快资产分配,因此Rails不必为自己提供服务.

请注意资源如何webpacker放在目录中的packs文件夹中/app/assets.这些包将被预编译并放入/public/packs文件夹中,这些预编译包将从该文件夹中进行并在页面请求期间提供.

/public/packs-test文件夹是预编译测试环境包的位置.您可以在config/webpacker.yml文件中配置每个环境的预编译包的位置.


至于是否通过版本控制来跟踪这些文件,这取决于您 - 这通常是您在部署到生产时需要执行的操作的后勤问题.从官方Ruby on Rails指南:

您可能希望在本地预编译资产有几个原因.其中包括:

  • 您可能没有对生产文件系统的写入权限.
  • 您可能正在部署到多个服务器,并希望避免重复工作.
  • 您可能正在进行不包含资产更改的频繁部署.

本地编译允许您将编译的文件提交到源代码控制中,并正常部署.

有关为什么(或为什么不)要将生成的文件预编译并提交到版本控制的更多原因,请参阅本地预编译的官方Ruby on Rails指南第4.2节.