1

Reltool でリリースをビルドしています。アプリを起動するには構成ファイルが必要です。次の関数を使用して構成ファイルを読み取ります。

read_config(Filename) ->
    {ok, [Config]} = file:consult(filename:join(
                                  [filename:dirname(code:which(?MODULE)),
                                   "..", "config", Filename])),
    Config.

Reltool が作業リリースをビルドできるように構成ファイルを使用する良い方法は何ですか?

4

2 に答える 2

3

より特殊な構成ファイルが必要な場合はrebar、ファイルをリリースにコピーできます。ファイル内のオプション(標準の構成オプションではありません)を使用してetc、アプリの下のフォルダーに(デフォルトでrebar作成されます):etcoverlayreltool.configoverlayreltool

%% reltool.config
{overlay, [{copy, "../path/foo.config", "etc/foo.config"}, ...

次のファイルを使用して、構成ファイルを引数としてvmに渡すことができvm.argsます。

%% vm.args
-config etc/foo.config

開始スクリプトは、vm.argsファイルを引数としてvmに渡す必要があります(rebarこれも自動的に実行するスクリプトを生成します)。

この関数init:get_argumentを使用すると、VMに対するより特殊な引数を読み取ることができます。例:

%% vm.args
-very_special_config etc/foo.config

case init:get_argument(very_special_config) of
  {ok, Arg} -> Arg;
  _ -> fail
end
于 2012-05-01T05:24:57.217 に答える
1

非常に特別な目的でない限り、独自の構成ファイルを用意する必要はありません。構成ファイルがバージョンごとに異なる場合、それらの異なる構成を<application>/ebin/<application>.app.

デフォルトの構成変数を にセットアップできます<application>/ebin/<application>.app。詳細については、http://www.erlang.org/doc/man/app.html を参照してください。

これで、 を使用して構成変数を使用する準備が整いました application:get_env(<application_name>, <key>, <default_value>)。定義されていない場合は、 で設定することもできますapplication:set_env/3。詳細については、このhttp://www.erlang.org/doc/man/application.htmlをご覧ください。

次に、 を定義してこれらのアプリケーション変数をオーバーライドし、 でコマンドを<any_name_or_system_name>.config開始するときにその変数を使用することもできます。コマンドオプションを開始するためにこれを見ることができますhttp://www.erlang.org/doc/man/erl.htmlerl--config <file_name>.config

コマンドを開始すると、 を使用して構成変数をオーバーライドすることもできます-<application> <key> <value>

アプリケーションの構成ファイルの構文については、こちらを参照することもできます。 http://www.erlang.org/doc/man/config.html

OTP アプリケーションの構築に成功すると、非常に簡単に思えるでしょう。

于 2012-04-30T23:01:09.843 に答える