Erlang OTPアプリケーションを開始し、アプリケーションのルートスーパーバイザーにコマンドライン引数を渡すことをどのように許可しますか?
-
27-10-2019 - |
質問
Quick 1ライナー:OTPアプリケーションをどのように開始し、コマンドラインの引数をパスしますか?
Getoptsによって解析されたコマンドライン引数を渡すことができる一般的な「Unix」方法でOTPアプリケーションを開始できることを望みました。だから、私は getopt コマンドライン引数の解析を処理するライブラリ。
シノの答えは私を正しい道に導いた:
- 私は私のescriptにgetoptsの解析をさせます
- EScriptは、アプリケーションを使用してアプリケーションの説明をメモリにロードします:load/1
- 次に、アプリケーション:set_env/3を使用してCLI argsを保存します
- 次に、アプリケーションでアプリケーションを起動します:start/2
- アプリケーションが起動すると、Application:get_env/2を介して引数にアクセスできます
解決
また、コマンドラインのアプリケーション環境設定をオーバーライドすることもできます。
erl -myapp foo bar ...
これにより、application.get_env(myapp、foo)を「bar」に設定し、app.config設定を上書きします。
他のヒント
使用できます init:get_plain_arguments/0
コマンドライン(余分な)引数にアクセスするための機能。
例:
$ erl -sname example -extra extra args here
Erlang R15B (erts-5.9) [source] [64-bit] [smp:2:2] [async-threads:0] [kernel-poll:false]
Eshell V5.9 (abort with ^G)
(example@localhost)1> init:get_plain_arguments().
["extra","args","here"]
init:get_plain_argumets/0
その後の議論を返します -extra
文字列のリストとしてのオプション。オプション sname
説明のためだけです いいえ に表示されます init:get_plain_argumets/0
.
詳細については、ドキュメントを参照してください init
モジュール http://www.erlang.org/doc/man/init.html .
所属していません StackOverflow