0

Google とこのサイトで回答を検索しようとしましたが、どこにも見つからないようなので、質問することにしました。

私はウェブサーバーとして mochiweb を使用することを計画しており、数日間勉強しました。私の質問は簡単です:

カスタム構成をどこに配置または追加できますか? (例: データベース接続設定)、mochiweb はそれを読み込んで処理できましたか?

ありがとうブロモ

4

1 に答える 1

0

私がしたことは次のとおりです。

  1. config という名前の新しいフォルダーを priv 内に作成します。
  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 に答える