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