Я дальше ковырялся с DI и пока пришёл к тому, что статические зависимости удобно пробрасывать через драй инжект, а динамические через драй эффект резолв, лол.
Я пока не знаю на какие камни я наткнусь, но вышлядит прикольно.
Ещё я боюсь, что мне захочется все атрибуты пробрасывать через эффект. Типа такого:
require 'dry/effects'
include Dry::Effects::Handler.Resolve
class BillOrder
include Dry::Effects.Resolve(:order, :tariff)
def call
order[:cost].to_i * tariff
end
end
provide(order: { cost: 1 }, tariff: 100_500) do
puts BillOrder.new.call
end
Я пока не до конца понимаю, где та грань, которая отделяет удобство эффектов от излишнего использования.