2011-07-19 10 views
14

私は監視アプリケーションで作業しており、起動時にいくつかのIPアドレスのリストからなるいくつかの初期設定を渡す必要があります。このデータをアプリケーションに渡すOTPの方法は、.appファイルを介してですか?または他の一般的に受け入れられている方法がありますか?Erlang初期アプリケーション設定を保存します

+0

私はこの質問にまだ答えていないと思います。「開始するErlangノードにパラメータを渡すOTP方法はありますか?」です。 私はこの問題を解決するために、私が望むenv変数を使ってプログラムで起動できるノードを用意したいからです。 3つのアプローチが考えられます:1)ノードを起動する前に ".config"または "* .app"ファイルを修正してください。 2)ノードの作成中に、これらのパラメータを「アプリケーションキー値」フラグとして渡します。 3)アプリケーションを空白の状態のままにして、機能を開始するために構成メッセージを待つ。 私はまだ何を使用するかわかりません... – pedromanoel

答えて

1

いくつかの方法で設定を処理できます。 ここで別のstackoverflowへのリンクtopic

私見私はの.appファイルを示唆、またはあなたが(トピックをStackOverflowのためにhere別のリンク)の設定ファイルを使用することができます

0

私はのリストを持っている名前gen_serverプロセスを作成しますIPアドレスは状態です。サーバの初期化では、定義済みリストはfile:consultを使用してファイルから読み込まれ、サーバの初期状態として使用されます。この名前のgen_serverからIPアドレスのリストを取得するには、handle_call(get_ip、_From、State)を実装する必要があります。

このようにして、Erlangの大きなカルマを提供する共有グローバル状態を防ぎ、ランタイムIPアドレスの変更などの追加機能を開始することができます。

7

使用Erlang configuration file

設定ファイルがシステム内 アプリケーションの構成パラメータの値が含まれています。 erlコマンドライン引数-config Nameは、システムコンフィギュレーションファイル Name.configのデータを使用するようにシステムに指示します。

コンフィギュレーションファイルのコンフィギュレーションパラメータ値は、アプリケーションリソースファイルの値を (app(4)を参照)よりも優先します。コンフィギュレーションファイル内の値 は、コマンドラインフラグによってオーバーライドできます( erl(1)を参照)。

application:get_env/1,2を呼び出すと、設定パラメータの値が取得されます。

実行時にそれらを上書きする必要がある場合は、application:set_env/3を使用できますが、注意してください。

+3

「介護」とは何がありますか?ちょっと凝ってくれますか? – pedromanoel

+0

"注意して" - >実行時に設定された環境変数は、ノードの再起動時に初期値にリセットされます。また、バージョン管理された設定ファイルに反映されていない場合、実行時に行われた変更を追跡することも難しいです。 –

0

あなたのデータがエルラン語であるファイルを使用してください。ただし、ファイルを保護する必要があります。起動時にファイルから読み込み:file:consult/1。ファイルの読み取り専用を作るために

 
-include_lib("kernel/include/file.hrl"). 

protect_file(File)-> 
    {_,File_info} = file:read_file_info(File), 
    file:write_file_info(File,File_info#file_info{access = read,mode = 33060}). 

unprotect_file(File)-> 
    {_,File_info} = file:read_file_info(File), 
    file:write_file_info(File,File_info#file_info{access = read_write,mode = 33206}). 

利用機能​​:ファイルの変更は、ユーザーまたはシステム管理者によって行われます場合は、保護したり、ファイルへのアクセスを拒否するために、以下の機能を使用します。ファイルを書き込み可能にする必要がある場合は、unprotect_file/1を使用して変更します。解析する必要がないため、erlangの用語を持つファイルは簡単です。JSONオブジェクトまたはXMLデータをファイルに書き込むこともできます。要約すると、あなたが設定したすべてのファイルを使用することは、アプリケーションとそのアプリケーションと対話している人によってよく管理されます。

例として、ejabberd.cfgファイル、ejabberdサーバーの設定ファイルがあります。 erlangという用語を持つファイルが最も簡単です。ここでは、システム管理者が特定の設定に関する他の利用可能なオプションを見るためにコメントすることができます。

+0

ejabberdのソースコードを確認した後、私はこのメソッドを使うことも考えました。なぜこれが落とされたのですか? – naiquevin

+0

私はあまりにも、私はこのメソッドを長い間使用しているのだろうか。 'Ejabberd'もこれを使っています。' Riak' e.t.cでも人々に何が悪いですか? –

+0

-1です。ファイルを保護してもOPの質問に実際には対処できないためです。 –

関連する問題