More Related Content Similar to Все, что вы хотели знать о Rebar, но ленились прочитать (20) Все, что вы хотели знать о Rebar, но ленились прочитать1. Все, что вы хотели знать о Rebar,
но ленились прочитать :)
Юра Жлоба для Erlang Dnipro 2014
2. Rebar – это арматура для
железобетонных конструкций
http://en.wikipedia.org/wiki/Rebar
5. Rebar умеет
Создавать модули из шаблонов
Создавать релизы
Управлять зависимостями
Запускать тесты (EUnit и Common Test)
Генерировать документацию
11. Как его освоить?
Смотреть в исходный код.
Некоторые вещи
можно узнать только оттуда.
Например,
опции сборкиErlyDTL шаблонов
12. Как его освоить?
Все эти источники не полны
Нельзя просто взять, и прочитать
все про Rebar в одном месте по порядку
21. Основные команды
4 команды и одна опция
и вы знатоки Rebar :)
rebar
rebar
rebar
rebar
rebar
get-deps
compile
compile skip_deps=true
eunit skip_deps=true
clean skip_deps=true
28. Сборка
ebin/myapp.app
{application,metalkia,
[{description,"web blog platform"},
{vsn,"1"},
{registered,[]},
{applications,[kernel,stdlib]},
{mod,{metalkia_app,[]}},
{env,[]},
{modules,
[main_handler,metalkia_app,metalkia_sup]}]}.
29. Сборка
src/myapp.app.src
{application,metalkia,
[{description,"web blog platform"},
{vsn,"1"},
{registered,[]},
{applications,[kernel,stdlib]},
{mod,{metalkia_app,[]}},
{env,[]},
{modules, []}]}.
37. Управление зависимостями
{deps, [
{emysql, ".*",
{git, "https://github.com/Eonblast/Emysql.git",
"62b7c9b12daacfcbcf274bc0925a7f8d10e3a1e0"}},
{mcd, ".*",
{git, "https://github.com/EchoTeam/mcd.git",
"f72ebf5006e1b1234e16f86514e4291c57506024"}},
{cowboy, ".*",
{git, "https://github.com/extend/cowboy", "0.8.6"}},
{mimetypes, ".*",
{git, "git://github.com/spawngrid/mimetypes.git",
{branch, "master"}}},
{lager, ".*",
{git, "https://github.com/basho/lager.git", "2.0.1"}},
{ux, ".*",
{git, "https://github.com/erlang-unicode/ux.git", "v3.4.1"}}
]}.
46. Шаблоны
rebar list-templates
==> tmp (list-templates)
* simplesrv: priv/templates/simplesrv.template (escript) (variables:
"srvid")
* simplenode: priv/templates/simplenode.template (escript) (variables:
"nodeid")
* simplemod: priv/templates/simplemod.template (escript) (variables:
"modid")
* simplefsm: priv/templates/simplefsm.template (escript) (variables:
"fsmid")
* simpleapp: priv/templates/simpleapp.template (escript) (variables:
"appid")
* ctsuite: priv/templates/ctsuite.template (escript) (variables:
"testmod")
* basicnif: priv/templates/basicnif.template (escript) (variables:
"module")
47. Шаблоны
rebar create template=simpleapp appid=coolstuff
==> coolstuff (create)
Writing src/coolstuff.app.src
Writing src/coolstuff_app.erl
Writing src/coolstuff_sup.erl
yura ~/p/coolstuff $ tree
.
└── src
├── coolstuff_app.erl
├── coolstuff.app.src
└── coolstuff_sup.erl
1 directory, 3 files
48. Шаблоны
rebar create template=simplesrv srvid=my_server
==> coolstuff (create)
Writing src/my_server.erl
yura ~/p/coolstuff $ cat src/my_server.erl
-module(my_server).
-behaviour(gen_server).
-define(SERVER, ?MODULE).
...
49. Шаблоны
rebar create template=simplemod modid=my_cool_module
==> coolstuff (create)
Writing src/my_cool_module.erl
Writing test/my_cool_module_tests.erl
yura ~/p/coolstuff $ cat src/my_cool_module.erl
-module(my_cool_module).
-export([my_func/0]).
my_func() ->
ok.
yura ~/p/coolstuff $ cat test/my_cool_module_tests.erl
-module(my_cool_module_tests).
-include_lib("eunit/include/eunit.hrl").
51. Шаблоны
yura ~/p/rebar/priv/templates $ ls -1 simpleapp*
simpleapp_app.erl
simpleapp.app.src
simpleapp_sup.erl
simpleapp.template
yura ~/p/rebar/priv/templates $ cat simpleapp.template
{variables, [{appid, "myapp"}]}.
{template, "simpleapp.app.src", "src/{{appid}}.app.src"}.
{template, "simpleapp_app.erl", "src/{{appid}}_app.erl"}.
{template, "simpleapp_sup.erl", "src/{{appid}}_sup.erl"}.
53. Шаблоны
simplefsm -- создает gen_fsm модуль
basicnif -- создает порт, erlang-модуль и с-файл
ctsuite -- создает common test suite модуль
simplenode -- создает файлы для релиза
75. Escipt
Archive: rebar_file
warning [rebar_file]: 51 extra bytes at beginning or within zipfile
(attempting to process anyway)
creating: rebar/
creating: rebar/ebin/
inflating: rebar/ebin/getopt.beam
inflating: rebar/ebin/mustache.beam
inflating: rebar/ebin/rebar.app
inflating: rebar/ebin/rebar.beam
...
creating: priv/
creating: priv/templates/
inflating: priv/templates/basicnif.c
inflating: priv/templates/basicnif.erl
inflating: priv/templates/basicnif.template
...