我在哪里可以在relx版本中调用mnesia:create_schema / 1?

时间:2017-11-17 13:39:38

标签: erlang mnesia rebar3 relx

我有一个OTP应用程序' myapp'这取决于mnesia。我应该在哪里拨打mnesia:create_schema/1

如果我将依赖项添加到myapp.app.src中的{applications,[]},则mnesia首先启动,我无法在myapp:start/2中调用create_schema。在myapp.script / myapp.boot中调用它可能是有意义的,但是relx不允许我添加任何东西。

我不想让mnesia成为一个包含的应用程序。

编辑:我通过在relx配置中的应用程序中列出mnesia,但在mnesia:create_schema([node()]), application:ensure_all_started(mnesia, permanent)中运行myapp:start/2找到了解决方法。还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

我也有这个问题。您应该在relx应用列表中包含{mnesia, load},在应用的start/2回调中创建架构并启动mnesia。在{mnesia, [{dir, "YourMnesiaDBPath"}]}中编写sys.config也很不错。