Где я могу вызвать mnesia:create_schema/1 в релизе relx?
У меня есть приложение OTP "myapp", которое зависит от мнезии. Куда я должен позвонить mnesia:create_schema/1
?
Если я добавлю зависимость к {applications,[]}
в myapp.app.src сначала запускается mnesia, и я не могу вызвать create_schema в myapp:start/2
, Возможно, имеет смысл вызвать его в myapp.script / myapp.boot, но relx не позволяет мне ничего добавить к этому.
Я не хочу делать Mnesia включенным приложением.
РЕДАКТИРОВАТЬ: я нашел обходной путь, перечислив mnesia в приложениях в конфигурации relx, но работает mnesia:create_schema([node()]), application:ensure_all_started(mnesia, permanent)
в myapp:start/2
, Есть ли способ лучше?
1 ответ
У меня тоже была эта пробема. Вы должны включить {mnesia, load}
в списке приложений relx создайте схему в start/2
обратный вызов вашего приложения и начать мнезию. Это хорошо писать {mnesia, [{dir, "YourMnesiaDBPath"}]}
в sys.config
тоже.