Re: difficulty getting mnesia to work with cowboy web backend

Loïc Hoguin <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Organization Nine Nines
Message-ID <[email protected]>
Hello,

On 25/10/2020 00:31, jdmeta wrote:
> 
> 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"?

Mnesia is bundled with OTP so you need to add it to LOCAL_DEPS so that 
it is not getting fetched:

LOCAL_DEPS = mnesia

> 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?

Assuming you're using releases ("make run" is that) you just need to add 
your -mnesia parameters to the config/vm.args file.

-- 
Loïc Hoguin
https://ninenines.eu
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.