XaoGao / Todoser

Clone trello
3 stars 11 forks source link

Добавить DI #228

Closed XaoGao closed 1 year ago

XaoGao commented 2 years ago

В проекте появлются сервисы, пока они работают только с внутреними объектами, в будущем будет необходимо обращаться к внешним ресурсам, что придет к тому что будет тяжело тестировать эти объекты. Так же стоит уменить зависимости в проекте путем внедрения зависимостей, нужно: 1) Добавить гемы и зафиксировать на последней версии

gem 'dry-container'
gem 'dry-auto_inject'
gem 'dry-component'

2) Запустить в консоле

bundle install

3) Создать файл в проектеconfig/initializers/di.rb 4) Примерное содержание файла

require "dry-container"
require "dry-auto_inject"

# Создаем контейнер
class MyContainer
  extend Dry::Container::Mixin
end

# В этот раз регистрируем объекты без передачи зависимостей
# MyContainer.register "marks_create_list_marks_service", -> { Marks::CreateListMarksService.new }

# Создаем модуль AutoInject для использования контейнера
AutoInject = Dry::AutoInject(MyContainer)