Erlang:为 mnesia 指定工作目录?
Posted
技术标签:
【中文标题】Erlang:为 mnesia 指定工作目录?【英文标题】:Erlang: specifying a working directory for mnesia? 【发布时间】:2010-12-22 23:36:04 【问题描述】:如何在不通过命令行传递“dir”参数的情况下为mnesia
指定工作目录?
换句话说,我可以在调用 `mnesia:start()' 之前为 mnesia 指定一个“工作目录”吗?
【问题讨论】:
【参考方案1】:application:set_env(mnesia, dir, Dir).
【讨论】:
在 Erlang VM 中启动了一个 application_controller 进程。application_controller:set_env
是这个过程的“API”。 application:set_env
是一个更抽象的调用,它只处理应用程序。难怪目前它只调用该 API。
回答问题:),我认为application_controller服务器和模块的存在应该被视为“实现细节”,因此正确的方法是使用应用程序模块。【参考方案2】:
除了此处其他响应中提到的方法调用之外,您还可以在系统配置文件或使用 -config 参数指定的 .app 文件中指定此方法。请参阅http://erlang.org/doc/design_principles/applications.html#id2270704 了解更多信息。这允许您将配置与代码分开并避免大量命令行标志。
【讨论】:
我有类似的情况......我不想从代码内部设置mnesia dir......您能否详细说明应如何使用应用程序的.app文件来设置环境其他应用程序的变量。我了解如何使用 .config 文件来完成此操作。例如我的应用程序文件是 test.app,它在“应用程序”部分列出了 mnesia,所以当我开始“测试”时,mnesia 会自动启动。如何使用 test.app 将“dir”值传递给 mnesia? 相关文档在这里:erlang.org/doc/man/app.html 特别是应用程序文件规范中的 env 元组。您可以使用 set_env() 设置的任何内容也可以在那里或命令行上设置。以上是关于Erlang:为 mnesia 指定工作目录?的主要内容,如果未能解决你的问题,请参考以下文章