Size: a a a

Эликсир и Вунш

2018 April 08

RT

Roman Telichkin in Эликсир и Вунш
Konstantin
что мешает использовать
def start_link(opts), do:
   GenServer.start_link(__MODULE__, :ok, opts)
пример из официальной доки
источник

IA

Ilya Averyanov in Эликсир и Вунш
не нужно в последних эрлангах объявлять лишнее
источник

AP

Artur Plysyuk in Эликсир и Вунш
С какой версии?
источник

IA

Ilya Averyanov in Эликсир и Вунш
источник

IA

Ilya Averyanov in Эликсир и Вунш
источник

IA

Ilya Averyanov in Эликсир и Вунш
источник

AP

Artur Plysyuk in Эликсир и Вунш
Спасибо
источник

IA

Ilya Averyanov in Эликсир и Вунш
с 20й видимо
источник

ML

Maksim Lapshin in Эликсир и Вунш
Artur Plysyuk
Разьве в Эрланге ненадо обязательно ещё определить code_change, terminate и handle_info?
terminate надо всегда, иначе будут краши на стопе процесса
источник

IA

Ilya Averyanov in Эликсир и Вунш
синтаксис эрланга подкупает строгостью, но субъективно душа больше лежит к эликсировому
источник

ML

Maksim Lapshin in Эликсир и Вунш
code_change по сути не требуется, если не пользуешься апгрейдами
источник

ML

Maksim Lapshin in Эликсир и Вунш
handle_info и handle_call бывают почти всегда, они нужны
источник

ML

Maksim Lapshin in Эликсир и Вунш
handle_cast только если в команде принято использовать cast.  У нас нет, у нас в коде нет ни одной нетривиальной handle_cast
источник

AP

Artur Plysyuk in Эликсир и Вунш
Чем вызвано данное решение?
источник

RT

Roman Telichkin in Эликсир и Вунш
Maksim Lapshin
terminate надо всегда, иначе будут краши на стопе процесса
А куда краши вываливаться должны? Вот генсервер из гиста выше без реализованного terminate в шелле молчит как партизан при остановке:

Eshell V9.2  (abort with ^G)
1> c(kv_genserver).
{ok,kv_genserver}
2> {ok, Pid} = kv_genserver:start_link([]).
{ok,<0.67.0>}
3> gen_server:stop(Pid).
ok
источник

ML

Maksim Lapshin in Эликсир и Вунш
Roman Telichkin
А куда краши вываливаться должны? Вот генсервер из гиста выше без реализованного terminate в шелле молчит как партизан при остановке:

Eshell V9.2  (abort with ^G)
1> c(kv_genserver).
{ok,kv_genserver}
2> {ok, Pid} = kv_genserver:start_link([]).
{ok,<0.67.0>}
3> gen_server:stop(Pid).
ok
а, уже не требуется
источник

ML

Maksim Lapshin in Эликсир и Вунш
если нет функции terminate, она не будет вызываться
источник

ML

Maksim Lapshin in Эликсир и Вунш
то же самое про format_status
источник

IA

Ilya Averyanov in Эликсир и Вунш
terminate в принципе будет вызываться, когда процесс трапает экситы
источник

ML

Maksim Lapshin in Эликсир и Вунш
handle_info
источник