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

时间:2017-08-21 22:28:07

标签: ruby-on-rails webpack

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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

  

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

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

本地编译允许您将已编译的文件提交到源代码管理中,并正常部署。

See the official Ruby on Rails Guide section 4.2 on Local Precompilation了解更多原因(或者为什么不)您希望预编译并将生成的文件提交到版本控制中。