Где я могу вызвать 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 тоже.

Другие вопросы по тегам