有没有办法在牛仔应用程序中指定模式的路径?也许可以在 my_app.app.src 或任何配置文件中设置?
2 回答
在通过应用程序配置参数启动 mnesia 应用程序之前,必须将 mnesia 目录的路径提供给 erlang VM。在Mnesia 教程中,这是通过-Application par val
VM 参数语法完成的。
您所说的牛仔应用程序可能是 Erlang OTP 版本(由 relx 根据牛仔教程构建)。Cowboy issue #595中快速描述的解决方案如下。
解决方案之间的选择实际上取决于样式以及一些约束。任何足够复杂的版本都将使用配置文件,因此这将是一个不错的选择。vm.args
似乎更容易处理。最终,您可能需要更改启动脚本(例如从单个部署运行多个节点),并包含一些逻辑来定义 mnesia 目录。
为 relx 提供配置文件(sys_config 选项)
为此,请将以下术语添加到relx.config
asdocumented 。
{sys_config, "./config/sys.config"}.
sys.config
实际上是一个标准的 Erlang 配置文件,也记录在. 通过为 mnesia 应用程序添加一个部分来指定 mnesia 目录。如果不需要其他配置,文件将是:
[{mnesia, [{dir, "/path/to/dir"}]}].
获取 relx 以将参数传递给 vm(vm_args 选项)
该vm.args
文件实际上是通过-args_file
option传递给 VM 的。这是一个带有参数的简单文本文件。
您将在文档中添加relx.config
以下术语。
{vm_args, "./config/vm.args"}.
并将以下内容放入vm.args
文件中:
-mnesia dir foo
编写自己的启动脚本
relx
实际上会创建一个启动脚本,该脚本会根据需要传递-config sys.config
给args_file vm.args
VM。您可以修改此脚本或自行编写脚本以将-mnesia dir
参数实际传递给 VM。
如果是 vm.args,planit text -mnesia dir foo 无效,请使用格式:-mnesia {dir,foo}