0

我试图在谷歌和这个网站上搜索答案,但似乎我找不到任何地方,所以我决定问。

我打算使用 mochiweb 作为我的网络服务器,我研究了几天。我的问题很简单:

我可以在哪里放置或添加自定义配置?(例如数据库连接设置),所以 mochiweb 可以加载并处理它吗?

谢谢溴

4

1 回答 1

0

我所做的是:

  1. 我在 priv 中创建了一个新文件夹,名为:config
  2. 我把我的配置文件放在那里
  3. 我在mochiweb_sup.erl中添加一行,如下所示,将我的配置文件夹作为将传递给mochiweb_web.erl模块的参数的一部分:

    web_spec(Mod, Port) ->
        WebConfig = [{ip, {0,0,0,0},
                     {port, Port},
                     %% my code is below
                     {docroot, something_deps:local_path(["priv", "www"])},
                     {custom_config, something_deps:local_path(["priv", "config"])}],
    ...
    
  4. 比我从mochiweb_web.erl模块中读取的附加路径,如下所示

    start(Options) ->
        {DocRoot, Options1} = get_option(docroot, Options),
        %% my code is below
        {ConfigPath, Options2} = get_option(custom_config, Options1),
    
        %% loading my config file
        {ok, FileHandler} = get_config_file(ConfigPath),
    ...
    
  5. 然后我通过创建如下函数来加载我的自定义配置文件:

    get_config_file(ConfigPath) ->
        FileName = "custom_config.txt",
        case file:consult(filename:join([ConfigPath, FileName])) of
            {ok, FileHandler} ->
                {ok, FileHandler};
            {error, Reason} ->
                {error, Reason}
        end.
    

就是这样!现在您可以根据需要进一步处理该配置文件。如果你想处理配置,我建议你在start(Options)块中处理它,在mochiweb_http:start函数执行之前,所以如果你需要传递结果,你可以将它作为参数的一部分传递给mochiweb_http :start,但这意味着您需要在mochiweb_http.erl模块中扩展mochiweb_http:start函数。

谢谢。

于 2012-06-29T13:59:03.160 回答