Ruby Style and Project Organization
Dependency Boundaries
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.