Size: a a a

2020 May 23

ŹR

Źmićer Rubinštejn in pro.elixir
Ну там благодаря акторам можно назапусквть всяких генсерверов, которые будут жить все время пока гоняться тесты и выводить туда куда надо всякие комочки
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я например однажды с помощью агента разруливал циклические зависимости на этапе компиляции
источник

LL

Lama Lover in pro.elixir
Andrew Rudenko
ну вот есть генератор валидаторов из этого представления спеков?
Я как-то делал, но это бесполезно оказалось
источник

LL

Lama Lover in pro.elixir
Проблема тайпспек в том как устроена компиляция в эликсире. Из-за её жадной параллельности (компилирую пока могу) не получается получить тайпспеки из какого-нибудь другого модуля во время компиляции.
Типа если @type t :: MyProject.MyOtherModule.t() то во время компиляции достать MyProject.MyOtherModule.t() не получится, потому что не будет гарантии что он скомпилирован. Для этого нужно выставлять require или писать компилятор, который будет генерировать отдельный модуль после компиляции проекта (или перекомпилировать уже существующие), что достаточно сложная задача. Если у кого есть время - пожалуйста, будет полезная либа, но пока что программисту гораздо проще и быстрее написать матчинг с проверками типов (потому что такие валидации далеко не всегда нужны)
источник

LL

Lama Lover in pro.elixir
Lama Lover
Я как-то делал, но это бесполезно оказалось
Я могу залить, но он очень сырой и умеет только выкидывать boolean() на соответствие или несоответствие типу. Зато функции генерятся в компайле, и превращаются в чистый pattern-matching (почти)
источник

NB

Nikita Babushkin in pro.elixir
Компилятор, наверное, можно побороть по аналогии с doctest.
Если ты в тесте явно напишешь spectest_macro MyModule, то можешь делать require. Но я вообще ни разу не эксперт, просто предположение
источник

NB

Nikita Babushkin in pro.elixir
Хотя к каким последствиям приведет каскадный require не очень понятно, может все будет очень плохо
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Проблема тайпспек в том как устроена компиляция в эликсире. Из-за её жадной параллельности (компилирую пока могу) не получается получить тайпспеки из какого-нибудь другого модуля во время компиляции.
Типа если @type t :: MyProject.MyOtherModule.t() то во время компиляции достать MyProject.MyOtherModule.t() не получится, потому что не будет гарантии что он скомпилирован. Для этого нужно выставлять require или писать компилятор, который будет генерировать отдельный модуль после компиляции проекта (или перекомпилировать уже существующие), что достаточно сложная задача. Если у кого есть время - пожалуйста, будет полезная либа, но пока что программисту гораздо проще и быстрее написать матчинг с проверками типов (потому что такие валидации далеко не всегда нужны)
Может быть, генерацию валидаторов вынести в отдельный шаг сразу после основной компиляции, когда уже все модули со спеками готовы?.. А после уже во время запуска тестов запихивать в них трейс.

Черт его знает, получится ли.
источник

LL

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

Черт его знает, получится ли.
Так я написал что так можно, но это будет больно и неприятно
источник

LL

Lama Lover in pro.elixir
В моей текущей реализации, если невозможно достать спеку из модуля, то валидатор пытается вызвать валидатор этого модуля :\
источник
2020 May 24

AR

Andrew Rudenko in pro.elixir
Lama Lover
Проблема тайпспек в том как устроена компиляция в эликсире. Из-за её жадной параллельности (компилирую пока могу) не получается получить тайпспеки из какого-нибудь другого модуля во время компиляции.
Типа если @type t :: MyProject.MyOtherModule.t() то во время компиляции достать MyProject.MyOtherModule.t() не получится, потому что не будет гарантии что он скомпилирован. Для этого нужно выставлять require или писать компилятор, который будет генерировать отдельный модуль после компиляции проекта (или перекомпилировать уже существующие), что достаточно сложная задача. Если у кого есть время - пожалуйста, будет полезная либа, но пока что программисту гораздо проще и быстрее написать матчинг с проверками типов (потому что такие валидации далеко не всегда нужны)
спасибо, буду разбираться!
источник

MI

Maxim Isaev in pro.elixir
Всем привет, кто нибудь пользуется Guardian в связке с Argon2
Иду по официальному гайду по Guardian (https://hexdocs.pm/guardian/tutorial-start.html#content)
В итоге в случае успешной авторизации получаю ошибку
** (Plug.Conn.AlreadySentError) the response was already sent
Это в ответ на
Guardian.Plug.sign_in(user)
Кто-нибудь сталкивался с таким? Может кто-нибудь в последнее время проходил гайд?
источник

YS

Yuri S. in pro.elixir
покажи код def sign_in
источник

V

V in pro.elixir
Maxim Isaev
Всем привет, кто нибудь пользуется Guardian в связке с Argon2
Иду по официальному гайду по Guardian (https://hexdocs.pm/guardian/tutorial-start.html#content)
В итоге в случае успешной авторизации получаю ошибку
** (Plug.Conn.AlreadySentError) the response was already sent
Это в ответ на
Guardian.Plug.sign_in(user)
Кто-нибудь сталкивался с таким? Может кто-нибудь в последнее время проходил гайд?
Я делал guardian + bcrypt, всё норм. По другому гайду. Думаю, аргон отличается от бкрипт незначительными деталями.
источник

MI

Maxim Isaev in pro.elixir
Функция sign_in из Guardian.Plug (https://hexdocs.pm/guardian/Guardian.Plug.html#sign_in/5)
Но вообще нашёл косяк при
use Guardian ...
источник

MI

Maxim Isaev in pro.elixir
Благодарю за отзывчивость
источник

RS

Roman Suleymanov in pro.elixir
V
Я делал guardian + bcrypt, всё норм. По другому гайду. Думаю, аргон отличается от бкрипт незначительными деталями.
Нет разницы аргон или бкрипт, это лишь алгоритмы шифрования, а у него ошибка в пайплане плагов, после отправки ответа нет прерывания
источник

AA

Alex A in pro.elixir
Люди, подскажите, как по науке сделать аналог на эликсире такой Ruby конструкции:
def my_func(arg)
 return if arg == 0
 ...
end
источник

AA

Alex A in pro.elixir
нашел, кажется, do: :nothing
источник

LL

Lama Lover in pro.elixir
Alex A
Люди, подскажите, как по науке сделать аналог на эликсире такой Ruby конструкции:
def my_func(arg)
 return if arg == 0
 ...
end
def my_func(0), do: nil
def my_func(arg) do
 ...
end
источник