How to create, build and run an OTP application using Rebar
hg clone http://hg.basho.com/rebar/
./bootstrap ==> rebar (compile) Congratulations! You now have a self-contained script called "rebar" in your current working directory. Place this script anywhere in your path and you can use rebar to build OTP-compliant apps.
mkdir document-rebar cd document-rebar/ cp ../rebar/rebar .
./rebar create-app appid=myapp ==> document-rebar (create-app) Writing ebin/myapp.app Writing src/myapp_app.erl Writing src/myapp_sup.erl
mkdir -p apps/myapp mv ebin apps/myapp mv src apps/myapp
{sub_dirs, ["apps/myapp", "rel"]}.
mkdir rel cd rel ../rebar create-node nodeid=myapp ==> rel (create-node) Writing reltool.config Writing overlay/erts-vsn/bin/erl Writing overlay/erts-vsn/bin/nodetool Writing overlay/bin/myapp Writing overlay/etc/app.config Writing overlay/etc/vm.args cd ..
{sys, [
{lib_dirs, ["../apps"]},
{rel, "myapp", "1",
[
kernel,
stdlib,
sasl,
myapp
]},
{rel, "start_clean", "",
[
kernel,
stdlib
]},
{boot_rel, "myapp"},
{profile, embedded},
{excl_sys_filters, ["^bin/.*",
"^erts.*/bin/(dialyzer|typer)"]},
{app, myapp, [{incl_cond, include}]},
{app, sasl, [{incl_cond, include}]}
]}.
{rebar, [
{empty_dirs, [
"log/sasl"
]},
{overlay, "overlay"}
]}.
chmod aog+x ./rel/overlay/bin/myapp
./rebar -v compile DEBUG:Rebar location: "/Users/cb/Projects/document-rebar/rebar" DEBUG:/Users/cb/Projects/document-rebar: Using deps dir: /Users/cb/Projects/document-rebar/deps DEBUG:/Users/cb/Projects/document-rebar subdirs: ["/Users/cb/Projects/document-rebar/apps/myapp", "/Users/cb/Projects/document-rebar/rel"] DEBUG:/Users/cb/Projects/document-rebar/apps/myapp: Using deps dir: /Users/cb/Projects/document-rebar/deps DEBUG:/Users/cb/Projects/document-rebar/apps/myapp subdirs: [] ==> myapp (compile) DEBUG:Starting 3 compile worker(s) DEBUG:Worker exited cleanly Compiled src/myapp_app.erl Compiled src/myapp_sup.erl DEBUG:Worker exited cleanly DEBUG:Worker exited cleanly DEBUG:/Users/cb/Projects/document-rebar/rel: Using deps dir: /Users/cb/Projects/document-rebar/deps DEBUG:/Users/cb/Projects/document-rebar/rel subdirs: []
./rebar -v generate DEBUG:Rebar location: "/Users/cb/Projects/document-rebar/rebar" DEBUG:/Users/cb/Projects/document-rebar: Using deps dir: /Users/cb/Projects/document-rebar/deps DEBUG:/Users/cb/Projects/document-rebar subdirs: ["/Users/cb/Projects/document-rebar/apps/myapp", "/Users/cb/Projects/document-rebar/rel"] DEBUG:/Users/cb/Projects/document-rebar/apps/myapp: Using deps dir: /Users/cb/Projects/document-rebar/deps DEBUG:/Users/cb/Projects/document-rebar/apps/myapp subdirs: [] DEBUG:/Users/cb/Projects/document-rebar/rel: Using deps dir: /Users/cb/Projects/document-rebar/deps DEBUG:/Users/cb/Projects/document-rebar/rel subdirs: [] ==> rel (generate)
./rel/myapp/bin/myapp console Exec: /Users/cb/Projects/document-rebar/rel/myapp/erts-5.7.4/bin/erlexec -boot /Users/cb/Projects/document-rebar/rel/myapp/releases/1/myapp -embedded -config /Users/cb/Projects/document-rebar/rel/myapp/etc/app.config -args_file /Users/cb/Projects/document-rebar/rel/myapp/etc/vm.args -- console Root: /Users/cb/Projects/document-rebar/rel/myapp
Erlang R13B03 (erts-5.7.4) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:5] [kernel-poll:true]
Eshell V5.7.4 (abort with ^G)
(myapp@127.0.0.1)1> application:which_applications().
[{myapp,[],"1"},
{sasl,"SASL CXC 138 11","2.1.8"},
{stdlib,"ERTS CXC 138 10","1.16.4"},
{kernel,"ERTS CXC 138 10","2.13.4"}]