Google とこのサイトで回答を検索しようとしましたが、どこにも見つからないようなので、質問することにしました。
私はウェブサーバーとして mochiweb を使用することを計画しており、数日間勉強しました。私の質問は簡単です:
カスタム構成をどこに配置または追加できますか? (例: データベース接続設定)、mochiweb はそれを読み込んで処理できましたか?
ありがとうブロモ
私がしたことは次のとおりです。
以下のように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"])}],
...
以下のように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),
...
次に、以下のように関数を作成して、カスタム構成ファイルをロードします。
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関数を拡張する必要があることを意味します。
ありがとう。