2013-03-05 29 views
1

我按照驚人的「如何創建使用Erlang在10分鐘內HTTP API」七拼八湊在二郎一個非常簡單的小OTP應用:用命令行參數的作品開始二郎,與args_file不

https://vimeo.com/59832641

當我用視頻中演示的命令行參數啓動erl時,它完美地工作。但是,如果我嘗試使用-args_file參數啓動erl,則應用程序無法啓動。

args_file非常簡單;它只有一個行,如下所示:

-pa deps/*/ebin ebin -s fancyapi_app 

...這是錯誤報告我得到當我嘗試運行二郎:

=INFO REPORT==== 5-Mar-2013::19:32:59 === 
application: fancyapi 
exited: {shutdown,{fancyapi_app,start,[normal,[]]}} 
type: temporary 

任何想法? args_file FileName會比使用常規命令行參數導致更多的事情發生嗎?文檔是:

http://www.erlang.org/doc/man/erl.html

而且,我知道命令正在努力的程度,因爲如果我加入,說-sname node到文本文件中,ERL提示顯示([email protected])1>

回答

4

使用-emu_args標誌將顯示發送到模擬器的確切參數。下面是一個簡單的示例一起玩:

$ cat test.args 
-emu_args 
-pa deps/*/ebin 
-pa ebin 
-name [email protected] 

現在這一次我將手動通過所有這些論點:

通過ARGS文件
$ erl -emu_args -pa deps/*/ebin -pa ebin -name [email protected] 
Executing: /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp -- -root /Users/abhinavsingh/Builds/R15B03/lib/erlang -progname erl -- -home /Users/abhinavsingh -- -pa deps/cowboy/ebin deps/jsx/ebin deps/lager/ebin deps/mimetypes/ebin deps/ranch/ebin -pa ebin -name [email protected] 

Erlang R15B03 (erts-5.9.3.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false] 

Eshell V5.9.3.1 (abort with ^G) 
([email protected])1> 

下一頁:

$ erl -args_file test.args 
Executing: /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp -- -root /Users/abhinavsingh/Builds/R15B03/lib/erlang -progname erl -- -home /Users/abhinavsingh -- -pa deps/*/ebin -pa ebin -name [email protected] 

Erlang R15B03 (erts-5.9.3.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false] 

Eshell V5.9.3.1 (abort with ^G) 
([email protected])1> 

正如你所看到的,兩者真的不一樣。具體來說,雖然這樣做全部手動-pa deps/*/ebin擴展到-pa deps/cowboy/ebin deps/jsx/ebin ...,但是當你通過args文件傳遞它時,同樣不好。因此,某些模塊不在您的代碼路徑中,因此應用程序無法啓動。

+0

哇,它不會解析*,因爲它不在命令行直接。謝謝! – nerophon 2013-03-06 19:58:23