Exercise 1: A Block-Based DSL, Not a Difference in Explicitness — Possible Solution ==================================================================== WHAT MAKES draw do ... end A BLOCK-BASED DSL ------------------------------ Per this chapter, Rails.application.routes.draw takes an entire block of route declarations as its argument, and nested route structures - namespaces, resource groups, member and collection routes - are expressed as further blocks nested inside that outer one. This leans on Ruby's own block syntax, a language feature used pervasively throughout routes.rb to express structure and nesting. WHY THIS IS A MODEST DISTINCTION, NOT A DIFFERENCE IN EXPLICITNESS ------------------------------ Per this chapter, Laravel's own routes/web.php is equally explicit, real PHP code, using a fluent, chainable method-call style (Route::get(...)->middleware(...)->name(...)) that is just as deliberately written out as Rails' own routes.rb. Both files are executed application code, not implicit filesystem convention the way Next.js's routing is. The real difference is narrower than "explicit vs. implicit" - it's that Rails specifically leans on Ruby's block syntax for nesting, a language feature PHP has no direct equivalent of, not that one framework is more explicit than the other. WHY THIS WORKS AS AN ANSWER ------------------------------ It correctly explains what block-based DSL means concretely in the context of routes.rb, and correctly avoids overstating the comparison by acknowledging that Laravel's own routing file is equally explicit code, just using a different Ruby-vs-PHP syntactic idiom rather than a different philosophy.