【发布时间】:2014-07-01 09:02:05
【问题描述】:
有没有办法在牛仔应用程序中指定模式的路径?也许可以在 my_app.app.src 或任何配置文件中设置?
【问题讨论】:
有没有办法在牛仔应用程序中指定模式的路径?也许可以在 my_app.app.src 或任何配置文件中设置?
【问题讨论】:
在通过应用程序配置参数启动 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。
【讨论】:
[{mnesia, {dir, "/path/to/dir"}}] 更改为 [{mnesia, [{dir, "/path/to/dir"}]}] 来修复它
如果是vm.args,planit text -mnesia dir foo 无效,请使用格式: -mnesia {dir,foo}
【讨论】:
-mnesia dir foo,更准确地说:-mnesia dir '"/path/to/your/data"'