1

有没有办法在牛仔应用程序中指定模式的路径?也许可以在 my_app.app.src 或任何配置文件中设置?

4

2 回答 2

6

在通过应用程序配置参数启动 mnesia 应用程序之前,必须将 mnesia 目录的路径提供给 erlang VM。在Mnesia 教程中,这是通过-Application par valVM 参数语法完成的。

您所说的牛仔应用程序可能是 Erlang OTP 版本(由 relx 根据牛仔教程构建)。Cowboy issue #595中快速描述的解决方案如下。

解决方案之间的选择实际上取决于样式以及一些约束。任何足够复杂的版本都将使用配置文件,因此这将是一个不错的选择。vm.args似乎更容易处理。最终,您可能需要更改启动脚本(例如从单个部署运行多个节点),并包含一些逻辑来定义 mnesia 目录。

为 relx 提供配置文件(sys_config 选项)

为此,请将以下术语添加relx.configasdocumented 。

{sys_config, "./config/sys.config"}.

sys.config实际上是一个标准的 Erlang 配置文件,也记录在. 通过为 mnesia 应用程序添加一个部分来指定 mnesia 目录。如果不需要其他配置,文件将是:

[{mnesia, [{dir, "/path/to/dir"}]}].

获取 relx 以将参数传递给 vm(vm_args 选项)

vm.args文件实际上是通过-args_fileoption传递给 VM 的。这是一个带有参数的简单文本文件。

您将在文档中添加relx.config以下术语

{vm_args, "./config/vm.args"}.

并将以下内容放入vm.args文件中:

-mnesia dir foo

编写自己的启动脚本

relx实际上会创建一个启动脚本,该脚本会根据需要传递-config sys.configargs_file vm.argsVM。您可以修改此脚本或自行编写脚本以将-mnesia dir参数实际传递给 VM。

于 2014-05-13T16:54:33.160 回答
1

如果是 vm.args,planit text -mnesia dir foo 无效,请使用格式:-mnesia {dir,foo}

于 2017-02-22T06:30:13.263 回答