我正在使用Erlang MQTT代理,该代理使用墨鱼为应用程序生成.config文件。配置文件中的值最终会在应用程序中使用,例如,在某一点上,Opts变量将包含配置文件中的值,如{ssl_opts,{more,values,here}} ...}
这些值存储在哪里?我怎么能从函数内部访问它们?我对整个过程感到困惑,帮助或链接将极大地帮助我理解!
答案 0 :(得分:2)
来自应用程序aplication的模块kernel负责。可以使用application:get_env/1,2,3
函数和application:get_all_env/0,1
访问这些值
以及application:get_key/1,2
和application:get_all_key/0,1
。它存储在名为public ets
表ac_tab
([set, public, named_table, {read_concurrency,true}]
)中。确切地说,内部模块application_controller
负责它。
合并各种配置(.app
和.config
文件)的值(主要是env
密钥)并加载到application:load/1,2
中的ac_tab
表中是appliaction:start/1,2
的先决条件。请参阅7 Applications的OTP Design Principles User's Guide章节中的详细信息。
您的问题也在How to use application:get_env()
in Erlang/OTP?中得到了部分回答。