2009-12-03 12 views

risposta

12

application:set_env(mnesia, dir, Dir).

+1

C'è un processo application_controller avviato in Erlang VM. 'application_controller: set_env' è l '" API "per questo processo. 'applicazione: set_env' è una chiamata più astratta, che si occupa solo di applicazioni. Non c'è da meravigliarsi se al momento si chiama solo in quell'API. – Zed

+1

Per rispondere alla domanda :), credo che l'esistenza del server e del modulo application_controller debba essere considerata come "dettaglio dell'implementazione", e quindi il modo corretto è utilizzare il modulo dell'applicazione. – Zed

+0

@zed: concordato sul punto precedente. – jldupont

2

Oltre la chiamata al metodo detto in altre risposte qui si può anche specificare questo in un file di configurazione del sistema o .app specificato con il parametro -config. Vedere http://erlang.org/doc/design_principles/applications.html#id2270704 per ulteriori informazioni. Ciò consente di mantenere la configurazione separata dal codice ed evitare molti flag a riga di comando.

+0

Ho una situazione simile ... e non voglio impostare mnesia dir dall'interno del codice ... Puoi per favore elaborare come dovrebbe essere usato il file .app di un'applicazione per impostare la variabile env per un'altra applicazione. Capisco come questo può essere fatto usando il file .config però. per esempio. Il mio file di applicazione è test.app e aveva mnesia elencato nella sezione "applicazioni", quindi mnesia viene avviato automaticamente quando avvio "test". Come posso passare il valore "dir" a mnesia usando test.app? – spkhaira

+0

la relativa documentazione è disponibile qui: http://www.erlang.org/doc/man/app.html in particolare l'envuple nella specifica del file dell'applicazione. tutto ciò che puoi impostare con set_env() può anche essere impostato lì o sulla riga di comando. –

Problemi correlati