Erlang 如何在cowboy应用程序中为mnesia指定目录?

Erlang 如何在cowboy应用程序中为mnesia指定目录?,erlang,mnesia,cowboy,relx,Erlang,Mnesia,Cowboy,Relx,有没有办法在cowboy应用程序中指定模式的路径?也许可以在my_app.app.src或任何配置文件中设置mnesia目录的路径,然后通过应用程序配置参数启动mnesia应用程序。in,这是用 -应用程序PAR VAL VM参数语法。< /P> 您所谓的牛仔应用程序可能是一个Erlang OTP版本(由relx根据牛仔教程构建)。中快速描述的解决方案如下所示 解决方案之间的选择实际上取决于样式以及一些约束。任何足够复杂的版本都会使用配置文件,因此这是一个不错的选择vm.args似乎更容易处理。

有没有办法在cowboy应用程序中指定模式的路径?也许可以在my_app.app.src或任何配置文件中设置mnesia目录的路径,然后通过应用程序配置参数启动mnesia应用程序。in,这是用<代码> -应用程序PAR VAL VM参数语法。< /P> 您所谓的牛仔应用程序可能是一个Erlang OTP版本(由relx根据牛仔教程构建)。中快速描述的解决方案如下所示

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

为relx提供配置文件(sys\U配置选项) 为此,将以下术语添加到
relx.config
as

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

[{mnesia, [{dir, "/path/to/dir"}]}].
获取relx以向vm传递参数(vm_args选项)
vm.args
文件实际上是通过。这是一个带有参数的简单文本文件

您可以将以下术语添加到
relx.config
as

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

-mnesia dir foo
编写自己的开始脚本
relx
实际上创建了一个启动脚本,它根据需要将
-config sys.config
args\u文件vm.args
传递给vm。您可以修改此脚本或滚动自己的脚本,以实际将
-mnesia dir
参数传递给VM。

在通过应用程序配置参数启动mnesia应用程序之前,必须向erlang VM提供mnesia目录的路径。in,这是用<代码> -应用程序PAR VAL VM参数语法。< /P> 您所谓的牛仔应用程序可能是一个Erlang OTP版本(由relx根据牛仔教程构建)。中快速描述的解决方案如下所示

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

为relx提供配置文件(sys\U配置选项) 为此,将以下术语添加到
relx.config
as

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

[{mnesia, [{dir, "/path/to/dir"}]}].
获取relx以向vm传递参数(vm_args选项)
vm.args
文件实际上是通过。这是一个带有参数的简单文本文件

您可以将以下术语添加到
relx.config
as

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

-mnesia dir foo
编写自己的开始脚本
relx
实际上创建了一个启动脚本,它根据需要将
-config sys.config
args\u文件vm.args
传递给vm。您可以修改此脚本或滚动自己的脚本,将
-mnesia dir
参数实际传递给VM。

对于VM.args,planit text-mnesia dir foo无效,请使用以下格式:
-mnesia{dir,foo}

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

答案经过编辑,详细介绍了Github上引发的所有三种解决方案。非常感谢您提供了详细的答案!在第一种方法中,我遇到了错误,但它通过将
[{mnesia,{dir,“/path/to/dir”}}]
更改为
[{mnesia,[{dir,“/path/to/dir”}]}]
得到了修复。事实上,我相应地修复了这个示例。对答案进行了编辑,以详细说明在Github上引发的所有三种解决方案。非常感谢您对答案的扩展!在第一种方法中,我遇到了错误,但它通过将
[{mnesia,{dir,“/path/to/dir”}}]
更改为
[{mnesia,[{dir,“/path/to/dir”}]}]
来修复。实际上,我相应地修复了示例。您建议的格式似乎不起作用,至少在erlang OTP 23下是这样。格式仍然是
-mnesia dir foo
,更准确地说是:-mnesia dir
“/path/to/your/data”
您建议的格式似乎不起作用,至少在erlang OTP 23下是这样。格式仍然是
-mnesia dir foo
,更准确地说是:-mnesia dir
“/path/to/your/data”