Erlang: specifying a working directory for mnesia?
Asked Answered
K

2

7

How do I specify a working directory for mnesia without resorting to passing the "dir" parameter on the command-line?

In other words, can I specify a "working directory" for mnesia just before calling `mnesia:start()' ?

Koerner answered 3/12, 2009 at 19:53 Comment(0)
I
14

application:set_env(mnesia, dir, Dir).

Iceberg answered 3/12, 2009 at 20:7 Comment(2)
There is an application_controller process started in Erlang VM. application_controller:set_env is the "API" to this process. application:set_env is a more abstract call, that just deals with applications. No wonder though that currently it only calls into that API.Iceberg
To answer the question :), I believe that the existence of application_controller server and module should be regarded as "implementation detail", and thus the proper way is to use the application module.Iceberg
C
3

Besides the method call mentioned in other responses here you can also specify this in a system configuration file or .app file specified with the -config parameter. See http://erlang.org/doc/design_principles/applications.html#id2270704 for more information. This allows you keep the configuration seperate from the code and avoid a lot of command line flags.

Conglutinate answered 4/12, 2009 at 3:23 Comment(2)
I have a similar situation ... and I don't want to set mnesia dir from inside the code ... Can you please elaborate how .app file of an application should be used to set env variable for other application. I understand how this can be done using .config file though. e.g. My application file is test.app and it had mnesia listed in "applications" section, so mnesia is started automatically when I start "test". How can I pass "dir" value to mnesia using test.app?Lackaday
the relevant documentation for that is here: erlang.org/doc/man/app.html specifically the env tuple in the application file spec. anything you can set with set_env() can also be set there or on the commandline.Conglutinate

© 2022 - 2024 — McMap. All rights reserved.