Size: a a a

Saint P Ruby Community

2020 February 14

MS

Marat Safin in Saint P Ruby Community
Vladimir Kalinkin
по-хорошему контейнер не должен присутствовать в тестах
+
источник

AG

Alex G in Saint P Ruby Community
Vladimir Kalinkin
Ребят, вот я читаю всё это и задаюсь риторическим вопросом а нужны ли вам вообще контейнеры? Мне кажется вы с ними больше страдаете 🙃
так можно сказать, что рельсы ну нужны, в ответ на вопрос про них :)
и вообще про что угодно
источник

MS

Marat Safin in Saint P Ruby Community
Alex G
так можно сказать, что рельсы ну нужны, в ответ на вопрос про них :)
и вообще про что угодно
Так в чем преимущество контейнеров против ручной инициализации?
источник

AD

Anton Davydov in Saint P Ruby Community
Vladimir Kalinkin
по-хорошему контейнер не должен присутствовать в тестах
это холиварный вопрос так то, я считаю, что сам контейнер проверять в тестах не нужно, как и то, что зависимости правильно достаются. обычно мне удается не мокать контейнер из-за ханами (там в конструктор зависимостти прокидыватся), но в рельсе/грейпе/синатре/роде так не сделать, поэтому костылить приходиться
источник

AG

Alex G in Saint P Ruby Community
Marat Safin
Так в чем преимущество контейнеров против ручной инициализации?
в вопросе и ответ. помогает автоматизировать ручной труд
источник

AG

Alex G in Saint P Ruby Community
при явной/ручной передаче параметров, было бы довольно много "лишнего" когда вокруг
источник

AG

Alex G in Saint P Ruby Community
наверное, правильнее ставить вопрос: а нужно ли заморачиваться с DI?
источник

NS

Nikita Shilnikov in Saint P Ruby Community
надо инжектить все через эффекты и забыть про проблемы с мемоизацией
источник

AG

Alex G in Saint P Ruby Community
Если не включать мемоизацию и стабы одновременно в dry-контейнере, то кое-где прикольно получается.

Например, в интеграционных тестах можно подменить какой-то внутренний компонент, там где до этого был vcr/webmock.
Мне это больше нравится, потому что я стаблю "свой" код.

Конечно, можно сделать и без контейнера. allow_any_instance_of().to_receive().and_return никто не отменял.
Так что хз. Даже рспековские стабы где-то выигрывают, потому что они проверяют названия методов, которые стабятся и их сигнатуры.
Но это такое.
источник

AG

Alex G in Saint P Ruby Community
Nikita Shilnikov
надо инжектить все через эффекты и забыть про проблемы с мемоизацией
Я даже не знаю, шутишь ты или нет @flash_gordon  :)
Не работал еще с этим.
источник

AD

Anton Davydov in Saint P Ruby Community
Alex G
Я даже не знаю, шутишь ты или нет @flash_gordon  :)
Не работал еще с этим.
не, он не шутит
источник

NS

Nikita Shilnikov in Saint P Ruby Community
нууу, все что можно я перевел на эффекты, жизнь прежней не будет
источник

AG

Alex G in Saint P Ruby Community
а сколько людей еще с кодом работают? они тоже прониклись или есть подводные камни?
источник

NS

Nikita Shilnikov in Saint P Ruby Community
то есть ко всему остальному вопросов нет?) Подводные камни есть в интеграции, например, с тестами, где есть больше одного треда. Типа когда из браузера тыкается что-нибудь. То есть в одном месте нужно сконфигурировать, в остальном нет проблем, код, написанный с dry-system, менять не нужно
источник

NS

Nikita Shilnikov in Saint P Ruby Community
просто нет этих проблем с конструкторами, мемоизацией, стабами и т.п.
источник

AG

Alex G in Saint P Ruby Community
Nikita Shilnikov
то есть ко всему остальному вопросов нет?) Подводные камни есть в интеграции, например, с тестами, где есть больше одного треда. Типа когда из браузера тыкается что-нибудь. То есть в одном месте нужно сконфигурировать, в остальном нет проблем, код, написанный с dry-system, менять не нужно
да куча вопросов. Но ты же скажешь - попробуй и узнаешь.
Просто интересно, что говорит кто-нибудь другой. Понятно, что для автора все просто :)
источник

NS

Nikita Shilnikov in Saint P Ruby Community
видишь, никто не поверит, я поэтому даже и не продаю 🙂
источник

AD

Anton Davydov in Saint P Ruby Community
Nikita Shilnikov
то есть ко всему остальному вопросов нет?) Подводные камни есть в интеграции, например, с тестами, где есть больше одного треда. Типа когда из браузера тыкается что-нибудь. То есть в одном месте нужно сконфигурировать, в остальном нет проблем, код, написанный с dry-system, менять не нужно
а ты уже пробовал систему на эффекты перевести?
источник

AD

Anton Davydov in Saint P Ruby Community
я про сам код системы
источник

NS

Nikita Shilnikov in Saint P Ruby Community
источник