P
Size: a a a
P
LL
with {:user, {:ok, user}} <- {:user, User.find(user_id)}
LL
else
очень редко что-то появляетсяhappy-path
до конца, либо возвращаешь ошибку, которая случилась по путиLL
{:error, reason()}
у каждой функции должен быть свой reason
%UserError{kind: :not_found}
немного душно, а вот {:error, :user_not_found}
сделать не сложноLL
{:step_name, bar} <- {:step_name, foo()}
выглядят криво и тяжело понимаютсяRB
GenServer.cast
, а когда send
? У меня коллега спросил и мне сложно ответить на 100% точно почему один, а не другой.handle_info
для этого.ML
GenServer.cast
, а когда send
? У меня коллега спросил и мне сложно ответить на 100% точно почему один, а не другой.handle_info
для этого.gen_server:case(well_known_name, MyMessage)
case whereis(well_known_name) of
undefined -> ok;
Pid -> Pid ! MyMessage
end
ML
RB
ŹR
RB
ŹR
IK
LL
{:"$gen_cast", message}
или как-то такLL
iex(1)> GenServer.cast self(), :x
iex(2)> flush
{:"$gen_cast", :x}
RB
AD
RB
AD
defmodule Worker do
def do_smth(message), do: GenServer.cast(__MODULE__, ...)
def handle_cast(...), do: ...
end
defmodule AnotherModule do
@worker Application.get_env(:my_app, :worker)
def another_fun do
@worker.do_smth
end
end
LL
defmodule Worker do
def do_smth(message), do: GenServer.cast(__MODULE__, ...)
def handle_cast(...), do: ...
end
defmodule AnotherModule do
@worker Application.get_env(:my_app, :worker)
def another_fun do
@worker.do_smth
end
end
@module Application.get_env