Size: a a a

2020 May 27

AB

Alex Bubnov in pro.elixir
Andrew Rudenko
вот, в точку, интегрант ОЧЕНЬ хорошо
я вертел в голове мысль, как бы подход integrant/component подтянуть в сторону эрланга, но не уделил этому достаточно времени.
в эрланге и эликсире очень плохо со связыванием, сплошные именованные процессы.
источник

D

D in pro.elixir
Anastasiya Dyachenko
Нафига уметь DI когда в эликсире его даже нет
Такой подход не считается за DI?
@handler Application.compile_env(:my_app, :handler, RealHandler)
 def create_entity(attrs \\ %{}, handler \\ @handler) do
   %Entity{}
   |> Entity.changeset(attrs)
   |> Repo.insert()
   |> handler.call()
 end
источник

AD

Anastasiya Dyachenko in pro.elixir
Это тоже стратегия, сейчас найду точно
источник

AB

Alex Bubnov in pro.elixir
Anastasiya Dyachenko
Это тоже стратегия, сейчас найду точно
А точно не визитор?
источник

D

D in pro.elixir
Anastasiya Dyachenko
Это тоже стратегия, сейчас найду точно
тогда я не понимаю, handler - это Dependency, передача аргументом - это Injection
источник

AB

Alex Bubnov in pro.elixir
Это я к тому, что может быть сойтись на максимально общем термине IoC?
источник

V

V in pro.elixir
Alex Bubnov
Это я к тому, что может быть сойтись на максимально общем термине IoC?
Какие ещё существуют методы IoC кроме DI?
источник

AD

Anastasiya Dyachenko in pro.elixir
D
тогда я не понимаю, handler - это Dependency, передача аргументом - это Injection
dependency injection это некий всея модуль, который внутри себя содержит ссылки на много сервисов условно
источник

V

V in pro.elixir
D
Такой подход не считается за DI?
@handler Application.compile_env(:my_app, :handler, RealHandler)
 def create_entity(attrs \\ %{}, handler \\ @handler) do
   %Entity{}
   |> Entity.changeset(attrs)
   |> Repo.insert()
   |> handler.call()
 end
только handler.call() а не @handler.call()
источник

AB

Alex Bubnov in pro.elixir
V
Какие ещё существуют методы IoC кроме DI?
Да какие угодно. IoC это принцип, DI - деталь реализации
источник

PS

Pavel S in pro.elixir
V
Какие ещё существуют методы IoC кроме DI?
Фабрика
источник

AK

Alexander Kladov in pro.elixir
Anastasiya Dyachenko
dependency injection это некий всея модуль, который внутри себя содержит ссылки на много сервисов условно
нет, это же dependency injection container
источник

D

D in pro.elixir
V
только handler.call() а не @handler.call()
да, само собой конечно, опечатка
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Судя по всему, IOC это не про это
источник

ŹR

Źmićer Rubinštejn in pro.elixir
То что мы обсуждаем - dependency inversion
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но это принцип
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Если для работы куска кода ты в качестве «конструктора» или «аргумента» получаешь объект с конкретной реализацией заданного интерфейса, а в твоём коде ты полагаешься только на интерфейс а не на реализацию - это dependency injection
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Контейнер не является обязательным условием
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Sys.config вполне подходит )
источник

AR

Andrew Rudenko in pro.elixir
Alex Bubnov
я вертел в голове мысль, как бы подход integrant/component подтянуть в сторону эрланга, но не уделил этому достаточно времени.
в эрланге и эликсире очень плохо со связыванием, сплошные именованные процессы.
да, 1в1 интегрант явно в эликсир / эрланг не перетащишь. и везде глобальные стейты какие-то
источник