Keep project code honest by naming which layer owns each dependency.

Dependency Boundaries

dependency_boundaries.rb
dependency = 
layer = case dependency
when "json"
  "serialization"
when "net/http"
  "adapter"
when "minitest"
  "test"
else
  "unknown"
end

allowed_in_domain = layer == "serialization"
review_needed = !allowed_in_domain

puts "dependency=#{dependency}"
puts "layer=#{layer}"
puts "allowed_in_domain=#{allowed_in_domain}"
puts "review_needed=#{review_needed}"
dependency = 
layer = case dependency
when "json"
  "serialization"
when "net/http"
  "adapter"
when "minitest"
  "test"
else
  "unknown"
end

allowed_in_domain = layer == "serialization"
review_needed = !allowed_in_domain

puts "dependency=#{dependency}"
puts "layer=#{layer}"
puts "allowed_in_domain=#{allowed_in_domain}"
puts "review_needed=#{review_needed}"
dependency = 
layer = case dependency
when "json"
  "serialization"
when "net/http"
  "adapter"
when "minitest"
  "test"
else
  "unknown"
end

allowed_in_domain = layer == "serialization"
review_needed = !allowed_in_domain

puts "dependency=#{dependency}"
puts "layer=#{layer}"
puts "allowed_in_domain=#{allowed_in_domain}"
puts "review_needed=#{review_needed}"
boundaries When dependencies are described explicitly, it is easier to keep domain code separate from adapters and tools.