Size: a a a

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

2020 April 16

DG

Dmitry Grach in Эликсир и Вунш
Dmitry Grach
Вот эту книгу очень рекомендую. Там хоть и примеры на Ruby, но она очень классно рассказывает про написание интерпретаторов, и про конечные автоматы, из которых состоят регулярки.
А еще, нужно помнить, что Elixir стоит поверх Erlang в котором есть встроенные Lex & Yacc
Собственно по этой книжке я писал интерпретатор Clojure на Ruby, и сделал пока только ридер и парсер той же Clojure на Elixir
источник

DG

Dmitry Grach in Эликсир и Вунш
Очень годная книга. Попробовать написать свой собственный простенький язык - очень расширяет горизонты.
источник

KE

Konstantin Ermolchev in Эликсир и Вунш
Спасибо
источник
2020 April 20

a

atanych in Эликсир и Вунш
В чем фишка Multi?
Есть ли разница между
   Ecto.Multi.new()
   |> Ecto.Multi.insert(:first, %Post{title: "first"})
   |> Ecto.Multi.insert(:second, %Post{title: "second"})
   |> MyApp.Repo.transaction()
и

   MyApp.Repo.transaction(fn ->
     ...
   end)
источник

a

atanych in Эликсир и Вунш
https://youtu.be/YQxopjai0CU?t=1184

получается ничем на уровне DB,  только удобством работы с errors
источник
2020 April 21

SK

S. Karpieš in Эликсир и Вунш
да, удобством работы с errors, ну и наглядней. Я редко использую transaction с функцией, всегда как-то через Multi
источник

a

atanych in Эликсир и Вунш
S. Karpieš
да, удобством работы с errors, ну и наглядней. Я редко использую transaction с функцией, всегда как-то через Multi
Спасибо
источник
2020 April 22

T

Tharin in Эликсир и Вунш
Друзья, я эликсир трогаю недавно, и не очень хорошо понимаю, как тестировать сайд эффекты в функциях. Набросал тут пастебин, если кто может посоветовать что-то - буду рад. https://pastebin.com/nH71NWcx
источник

D

Dk in Эликсир и Вунш
Tharin
Друзья, я эликсир трогаю недавно, и не очень хорошо понимаю, как тестировать сайд эффекты в функциях. Набросал тут пастебин, если кто может посоветовать что-то - буду рад. https://pastebin.com/nH71NWcx
источник

T

Tharin in Эликсир и Вунш
@Dk привет) Читал. Кажется, обвешивать простые модули и делать из них поведения - избыточно.
источник

AD

Anastasiya Dyachenko in Эликсир и Вунш
Привет, я обычно пишу юнит тесты на самые мелкие публичные функции и интеграционные на полное выполнение веб запроса и пропускаю промежуточные уровни. Интеграционные тесты частично повторяют юнит тесты, но они менее подробные
источник

AD

Anastasiya Dyachenko in Эликсир и Вунш
Мокаю только внешние вызовы, в твоём случае только надю
источник

T

Tharin in Эликсир и Вунш
У меня не совсем обычное веб-приложение. У меня один контроллер, в который от телеграмма прилетает сообщение. Оно парсится и уходит в нужный flow
источник

T

Tharin in Эликсир и Вунш
"Пропускаю промежуточные уровни"?
источник

AD

Anastasiya Dyachenko in Эликсир и Вунш
Ну условно если есть функции

def a() ... end
def b()
...
a()
...
end

def c()
b()
...
end

То я тестирую a  и c, и не тестирую b
источник

T

Tharin in Эликсир и Вунш
Я кучу всего нашёл и про Mox от Жозе тоже. Но мне кажется, что делать из всех модулей behaviours только ради того, чтобы их потом замокать ... ммм
источник

T

Tharin in Эликсир и Вунш
А, вот как
источник

AD

Anastasiya Dyachenko in Эликсир и Вунш
Так я говорю, что мокаю только внешние вызовы, не внутренние модули. А для внешних норм писать behaviour
источник

T

Tharin in Эликсир и Вунш
Но в таком случае ты два раза вызываешь a() в тесте. Я не уверен, что это НАСТОЛЬКО замедляет их, но если можно пропустить вызов a(), то почему бы и нет?
источник

T

Tharin in Эликсир и Вунш
Сначала ты тестируешь функцию напрямую. Затем она у тебя вызывается сама, когда ты тестируешь c()
источник