difficulty getting mnesia to work with cowboy web backend

jdmeta jdmeta@REDACTED
Sun Oct 25 00:31:04 CEST 2020


i'm building a web backend using cowboy and mnesia.
at this point i'm running mnesia on only one node and don't need 
distributed mnesia for the foreseeable future.

i installed cowboy and bootstrapped my cowboy app per the instructions 
in the cowboy user guide on ninenines.eu.
i run my cowboy app with "make run" which uses the rather involved 
"erlang.mk" makefile in the ninenines repo.

i need to specify that my cowboy app is dependent on the mnesia app.
i edited "Makefile" in my app's root directory and added "mnesia" to the 
DEPS variable.
when i then execute "make run" i get "Error: Unknown or invalid 
dependency: mnesia."

when i execute "make run", erlang.mk appears to automatically construct 
ebin/<my_app>.app - no doubt using some other input which i haven't 
found yet.
if i manually edit ebin/<my_app>.app to add mnesia to the "applications" 
tuple then mnesia runs as expected.

how do i specify that my cowboy app is dependent on mnesia such that the 
<my_app>.app config file gets constructed correctly every time i execute 
"make run"?

but wait, there's more... :(

i constructed an mnesia schema in a particular directory under the 
cowboy app directory hierarchy.
i need to specify this directory to mnesia which apparently can only be 
done using the "-mnesia dir <Dir>" option to erl.

is there any other way to do this?
why isn't the schema directory an argument to mnesia:start()?
that seems much more intuitive.

back again to the gigantic erlang.mk where i found where the erl command 
that runs erts which in turn runs my cowboy app.
i added the "-mnesia dir <Dir>" option to the erl command line, but 
mnesia is still not finding my pre-defined schema - it's running in 
ram-only mode which means it didn't find a pre-defined schema.

i can run erl manually in the directory above the directory where my 
pre-defined schema is located, and see that the schema is there and it's 
configured as i expected.

when executing "make run" (navigating through the erlang.mk maze), how 
do i get mnesia to see the schema directory when it's launched by the 
cowboy app?
do i need to pass an argument to some start() function?
does erlang.mk need to be modified or one of its inputs modified?

thanx for any assistance!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20201024/d937cdf2/attachment.htm>


More information about the erlang-questions mailing list