使用 Keter 包含额外的目录

Including extra directories with Keter

我有一个 Yesod 站点并创建了一个处理程序来处理下载和强制约束。我的 Yesod 项目目录有一个名为 downloads 的子目录,它包含我希望用户在登录后能够下载的文件。该处理程序在我的开发和暂存箱中运行良好,但在我转移到生产。我将问题追溯到 yesod keter 在构建捆绑包时未归档文件。

如何说服 keter 包含该目录?

yesod keter 命令所做的只是创建一个 .tar.gz 压缩存档文件,扩展名为 .keter,包含以下子目录:

  • config: 源代码树中同名目录的精确副本
  • dist:包含一个子目录 bin,其中包含您的应用程序的二进制文件
  • static: 源代码树中同名目录的精确副本

请注意,您的应用程序二进制文件的路径是通过 exec 设置在 config/keter.yml 中设置的,而静态文件的路径是通过 root 设置设置的。如果您想查看源代码,yesod keter 命令包含的确切文件集在 findFiles 函数中指定。

如果您想自定义 .keter 文件的内容,最直接的方法可能是编写 shell 脚本来创建存档。使用此脚本,您可以将任意额外目录添加到存档中。

模拟 yesod keter 行为所需的最低限度 bash 脚本如下:

#!/bin/bash
tar cvf myapp.keter config/ dist/bin/ static/

您可以自定义此内容,但您希望生成正确的内容。将 download/ 添加到此命令行的末尾应该可以解决问题。