Size: a a a

2021 January 03

ŹR

Źmićer Rubinštejn in pro.elixir
Лучше уже with
источник

LL

Lama Lover in pro.elixir
Źmićer Rubinštejn
Лучше уже with
И when not is_nil, да?
источник

IK

Ihor Katkov in pro.elixir
Lama Lover
Ничем, лично я в своём коде избегаю nil-ов
А так, эрлангисты весь этот with декомпозируют в функции и матчатся в них

Например,
def update_username(id, newname) do
 id
 |> do_get_user()
 |> do_update_username()
end

defp do_get_user(nil), do: nil
defp do_get_user(id), do: User.get(id)

defp do_update_username(nil, _), do: nil
defp do_update_username(user, name), do: User.update(user, name: name)
Не люблю такой подход. Парочку раз видел более извратный вариант

def foo({:ok, car}), do: :bar

Ну и эррор обработка.

И это все в пайпинге...

Мне нравится рекомендация из эрланг гайдлайна на этот счёт - в core ядре доверять типам инпутов в функциях
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Самый сок в with - это когда в нескольких местах одинаковый fail path и надо залогать.

И тогда ты пишешь что-то типа

with {:name, name} <- {:name, get_name()}
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Чтобы потом в else заматчить где именно упало
источник

LL

Lama Lover in pro.elixir
Ihor Katkov
Не люблю такой подход. Парочку раз видел более извратный вариант

def foo({:ok, car}), do: :bar

Ну и эррор обработка.

И это все в пайпинге...

Мне нравится рекомендация из эрланг гайдлайна на этот счёт - в core ядре доверять типам инпутов в функциях
Ну это-то понятно, но тут разговор о том, как хэндлить result :: any() | nil, вместо {:ok, result :: any()} | :error
источник

A ß in pro.elixir
Źmićer Rubinštejn
Самый сок в with - это когда в нескольких местах одинаковый fail path и надо залогать.

И тогда ты пишешь что-то типа

with {:name, name} <- {:name, get_name()}
и после этого кто-то ещё говорит что with не говно
источник

AB

Alex Bubnov in pro.elixir
Alex Bubnov
я как-то делал хелперы для with, совсем не такие, но чем-то по духу похожие, типа

def with_not_nil(nil, key), do: {:error, {key, nil}}
def with_not_nil(v, key), do: {key, v}

...
with {:a, a} <- Map.get(x, "a") |> with_not_nil(:a)
...
Вот там я постил про with и хэлперы к нему, код довольно приятный получался
источник

AB

Alex Bubnov in pro.elixir
A ß
и после этого кто-то ещё говорит что with не говно
Главная проблема with в том, что он не позволяет легко перейти от одной ошибки к сбору всех ошибок
источник

AB

Alex Bubnov in pro.elixir
А так нормальный тул для разгребания входящих данных на коленке
источник

LL

Lama Lover in pro.elixir
A ß
и после этого кто-то ещё говорит что with не говно
А что не так с with-то?
источник

A ß in pro.elixir
Lama Lover
А что не так с with-то?
выглядит как говно, работает как говно
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
Главная проблема with в том, что он не позволяет легко перейти от одной ошибки к сбору всех ошибок
Мне кажется, что если хочется обрабатывать ошибки от разных <- по-разному, то лучше всё вынести в различные функции просто
источник

LL

Lama Lover in pro.elixir
A ß
выглядит как говно, работает как говно
Так ты конкретное что-нибудь скажи
источник

A ß in pro.elixir
Lama Lover
Так ты конкретное что-нибудь скажи
куда конкретнее?
источник

LL

Lama Lover in pro.elixir
Lama Lover
Мне кажется, что если хочется обрабатывать ошибки от разных <- по-разному, то лучше всё вынести в различные функции просто
Ну вот как можно лучше сделать? Чего не хватает?
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Мне кажется, что если хочется обрабатывать ошибки от разных <- по-разному, то лучше всё вынести в различные функции просто
Я не думаю, что единый кусок логики "достать проекцию В из куска данных А" стоит размазывать на несколько функций
источник

B

Bogdan in pro.elixir
with - уж полюбому лучше чем nested case городить.
источник

B

Bogdan in pro.elixir
А в инных случаях он не нужен. ИМХО конечно же 🙂
источник
2021 January 04

TC

Timofey Chernousov in pro.elixir
Почему в доках Phoenix нет деплоя через Docker?
Прямолинейный подход упирается в необходимость знать DATABASE_URL на этапе сборки образа, а я хочу задавать её при запуске образа... Если есть толковый гайд, дайте, пожалуйста
источник