brut 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/Gemfile.lock +1 -1
  4. data/brut-js/CHANGELOG.md +5 -0
  5. data/brut-js/package-lock.json +2 -2
  6. data/brut-js/package.json +1 -1
  7. data/brut-js/specs/ConstraintViolationMessage.spec.js +1 -1
  8. data/brut-js/specs/ConstraintViolationMessages.spec.js +2 -2
  9. data/brut-js/specs/Form.spec.js +5 -5
  10. data/brut-js/src/ConstraintViolationMessage.js +3 -3
  11. data/brut-js/src/ConstraintViolationMessages.js +2 -2
  12. data/brutrb.com/.vitepress/config.mjs +1 -0
  13. data/brutrb.com/database-schema.md +22 -2
  14. data/brutrb.com/dev-environment.md +1 -0
  15. data/brutrb.com/form-constraints.md +2 -2
  16. data/brutrb.com/handlers.md +1 -1
  17. data/brutrb.com/i18n.md +2 -2
  18. data/brutrb.com/layouts.md +1 -1
  19. data/brutrb.com/recipes/migrations.md +210 -0
  20. data/docs/404.html +2 -2
  21. data/docs/adrs.html +4 -4
  22. data/docs/ai.html +4 -4
  23. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  24. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  25. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  26. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  27. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  28. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  29. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  30. data/docs/api/Brut/BackEnd.html +1 -1
  31. data/docs/api/Brut/CLI/App.html +1 -1
  32. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  33. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
  34. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +6 -6
  35. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
  36. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +6 -6
  37. data/docs/api/Brut/CLI/Apps/BuildAssets.html +2 -2
  38. data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
  39. data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
  40. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
  41. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +6 -2
  42. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
  43. data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
  44. data/docs/api/Brut/CLI/Apps/DB/Status.html +9 -9
  45. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  46. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
  47. data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
  48. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
  49. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
  50. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  51. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +8 -12
  52. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
  53. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +5 -5
  54. data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +384 -0
  55. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
  56. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +5 -5
  57. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  58. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
  59. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +36 -36
  60. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
  61. data/docs/api/Brut/CLI/Apps/Scaffold.html +2 -2
  62. data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
  63. data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
  64. data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
  65. data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
  66. data/docs/api/Brut/CLI/Apps/Test.html +1 -1
  67. data/docs/api/Brut/CLI/Apps.html +1 -1
  68. data/docs/api/Brut/CLI/Command.html +29 -31
  69. data/docs/api/Brut/CLI/Error.html +1 -1
  70. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  71. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  72. data/docs/api/Brut/CLI/Executor.html +1 -1
  73. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  74. data/docs/api/Brut/CLI/Options.html +1 -1
  75. data/docs/api/Brut/CLI/Output.html +1 -1
  76. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  77. data/docs/api/Brut/CLI.html +1 -1
  78. data/docs/api/Brut/FactoryBot.html +1 -1
  79. data/docs/api/Brut/Framework/App.html +1 -1
  80. data/docs/api/Brut/Framework/Config.html +16 -2
  81. data/docs/api/Brut/Framework/Container.html +1 -1
  82. data/docs/api/Brut/Framework/Error.html +1 -1
  83. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
  84. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  85. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  86. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  87. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  88. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  89. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  90. data/docs/api/Brut/Framework/Errors.html +1 -1
  91. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
  92. data/docs/api/Brut/Framework/MCP.html +1 -1
  93. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  94. data/docs/api/Brut/Framework.html +1 -1
  95. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  96. data/docs/api/Brut/FrontEnd/Component/Helpers.html +1 -1
  97. data/docs/api/Brut/FrontEnd/Component.html +1 -1
  98. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +3 -3
  99. data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
  100. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +10 -14
  101. data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
  102. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
  103. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +1 -1
  104. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
  105. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +3 -3
  106. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +1 -1
  107. data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
  108. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
  109. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
  110. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
  111. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
  112. data/docs/api/Brut/FrontEnd/Components.html +1 -1
  113. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  114. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  115. data/docs/api/Brut/FrontEnd/Form.html +92 -20
  116. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
  117. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
  118. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
  119. data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
  120. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
  121. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
  122. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
  123. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  124. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
  125. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  126. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
  127. data/docs/api/Brut/FrontEnd/Forms.html +1 -1
  128. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  129. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  130. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  131. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  132. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  133. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  134. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +2 -2
  135. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  136. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  137. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  138. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  139. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  140. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  141. data/docs/api/Brut/FrontEnd/Layout.html +1 -1
  142. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  143. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  144. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  145. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  146. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
  147. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  148. data/docs/api/Brut/FrontEnd/Page.html +1 -1
  149. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
  150. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  151. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  152. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  153. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  154. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  155. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  156. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  157. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  158. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  159. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  160. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  161. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  162. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  163. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  164. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  165. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  166. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  167. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  168. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  169. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  170. data/docs/api/Brut/FrontEnd.html +1 -1
  171. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  172. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  173. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  174. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  175. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  176. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  177. data/docs/api/Brut/I18n.html +1 -1
  178. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  179. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
  180. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
  181. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
  182. data/docs/api/Brut/Instrumentation.html +1 -1
  183. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
  184. data/docs/api/Brut/SinatraHelpers.html +1 -1
  185. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  186. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  187. data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
  188. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  189. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  190. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  191. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  192. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  193. data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
  194. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
  195. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
  196. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
  197. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
  198. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
  199. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
  200. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
  201. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
  202. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
  203. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
  204. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
  205. data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
  206. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
  207. data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
  208. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  209. data/docs/api/Brut/SpecSupport.html +1 -1
  210. data/docs/api/Brut.html +1 -1
  211. data/docs/api/Clock.html +1 -1
  212. data/docs/api/ModuleName.html +595 -0
  213. data/docs/api/RichString.html +1 -1
  214. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  215. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
  216. data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
  217. data/docs/api/Sequel/Extensions.html +1 -1
  218. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  219. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  220. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  221. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  222. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  223. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  224. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  225. data/docs/api/Sequel/Plugins.html +1 -1
  226. data/docs/api/Sequel.html +1 -1
  227. data/docs/api/_index.html +24 -12
  228. data/docs/api/class_list.html +1 -1
  229. data/docs/api/file.README.html +1 -1
  230. data/docs/api/index.html +1 -1
  231. data/docs/api/method_list.html +478 -406
  232. data/docs/api/top-level-namespace.html +2 -2
  233. data/docs/assets/{app._UukLsdv.js → app.AkS4fHzI.js} +1 -1
  234. data/docs/assets/chunks/@localSearchIndexroot.C9FqcQxD.js +1 -0
  235. data/docs/assets/chunks/{VPLocalSearchBox.DhYUVvsa.js → VPLocalSearchBox.By6un1FD.js} +1 -1
  236. data/docs/assets/chunks/{theme.DHNq8t6D.js → theme.DwiUPdci.js} +2 -2
  237. data/docs/assets/{components.md.DP8maNoF.js → components.md.BfeWD9sX.js} +3 -3
  238. data/docs/assets/{configuration.md.BDXwuZHU.js → configuration.md.DoSBNc0H.js} +1 -1
  239. data/docs/assets/{database-schema.md.CSYk6E6v.js → database-schema.md.C5gXexJi.js} +10 -3
  240. data/docs/assets/{database-schema.md.CSYk6E6v.lean.js → database-schema.md.C5gXexJi.lean.js} +1 -1
  241. data/docs/assets/{dev-environment.md.Dy6EldaM.js → dev-environment.md.DRH2D2-O.js} +3 -3
  242. data/docs/assets/dev-environment.md.DRH2D2-O.lean.js +1 -0
  243. data/docs/assets/{form-constraints.md.x5tNpTTI.js → form-constraints.md.DK5adCgM.js} +2 -2
  244. data/docs/assets/{forms.md.BwBNYrrL.js → forms.md.DFveP5g_.js} +1 -1
  245. data/docs/assets/{getting-started.md.B4LlHfav.js → getting-started.md.DZWjCVC0.js} +2 -2
  246. data/docs/assets/{handlers.md.Chyri6KA.js → handlers.md.h84MMB1R.js} +1 -1
  247. data/docs/assets/{i18n.md.xQhiGo1G.js → i18n.md.BAm9t9JJ.js} +1 -1
  248. data/docs/assets/{layouts.md.CJGDFY-m.js → layouts.md.CVGl9xIO.js} +1 -1
  249. data/docs/assets/recipes_migrations.md.DPN3gQE3.js +97 -0
  250. data/docs/assets/recipes_migrations.md.DPN3gQE3.lean.js +1 -0
  251. data/docs/assets.html +4 -4
  252. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  253. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  254. data/docs/brut-js/api/Autosubmit.html +1 -1
  255. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  256. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  257. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  258. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  259. data/docs/brut-js/api/BufferedLogger.html +1 -1
  260. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  261. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  262. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  263. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  264. data/docs/brut-js/api/ConstraintViolationMessage.html +2 -2
  265. data/docs/brut-js/api/ConstraintViolationMessage.js.html +4 -4
  266. data/docs/brut-js/api/ConstraintViolationMessages.html +3 -3
  267. data/docs/brut-js/api/ConstraintViolationMessages.js.html +3 -3
  268. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  269. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  270. data/docs/brut-js/api/Form.html +1 -1
  271. data/docs/brut-js/api/Form.js.html +1 -1
  272. data/docs/brut-js/api/I18nTranslation.html +1 -1
  273. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  274. data/docs/brut-js/api/LocaleDetection.html +1 -1
  275. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  276. data/docs/brut-js/api/Logger.html +1 -1
  277. data/docs/brut-js/api/Logger.js.html +1 -1
  278. data/docs/brut-js/api/Message.html +1 -1
  279. data/docs/brut-js/api/Message.js.html +1 -1
  280. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  281. data/docs/brut-js/api/RichString.html +1 -1
  282. data/docs/brut-js/api/RichString.js.html +1 -1
  283. data/docs/brut-js/api/Tabs.html +1 -1
  284. data/docs/brut-js/api/Tabs.js.html +1 -1
  285. data/docs/brut-js/api/Tracing.html +1 -1
  286. data/docs/brut-js/api/Tracing.js.html +1 -1
  287. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  288. data/docs/brut-js/api/external-Performance.html +1 -1
  289. data/docs/brut-js/api/external-Promise.html +1 -1
  290. data/docs/brut-js/api/external-ValidityState.html +1 -1
  291. data/docs/brut-js/api/external-Window.html +1 -1
  292. data/docs/brut-js/api/external-fetch.html +1 -1
  293. data/docs/brut-js/api/global.html +1 -1
  294. data/docs/brut-js/api/index.html +1 -1
  295. data/docs/brut-js/api/index.js.html +1 -1
  296. data/docs/brut-js/api/module-testing.html +1 -1
  297. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  298. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  299. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  300. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  301. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  302. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  303. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  304. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  305. data/docs/brut-js/api/testing_index.js.html +1 -1
  306. data/docs/brut-js.html +4 -4
  307. data/docs/business-logic.html +4 -4
  308. data/docs/cli.html +4 -4
  309. data/docs/components.html +8 -8
  310. data/docs/configuration.html +5 -5
  311. data/docs/css.html +4 -4
  312. data/docs/custom-element-tests.html +4 -4
  313. data/docs/database-access.html +4 -4
  314. data/docs/database-schema.html +13 -6
  315. data/docs/deployment.html +4 -4
  316. data/docs/dev-environment.html +6 -6
  317. data/docs/dir-structure.html +4 -4
  318. data/docs/doc-conventions.html +4 -4
  319. data/docs/end-to-end-tests.html +4 -4
  320. data/docs/features.html +4 -4
  321. data/docs/flash-and-session.html +4 -4
  322. data/docs/form-constraints.html +7 -7
  323. data/docs/forms.html +6 -6
  324. data/docs/getting-started.html +7 -7
  325. data/docs/handlers.html +6 -6
  326. data/docs/hashmap.json +1 -1
  327. data/docs/hooks.html +4 -4
  328. data/docs/i18n.html +6 -6
  329. data/docs/index.html +3 -3
  330. data/docs/instrumentation.html +4 -4
  331. data/docs/javascript.html +4 -4
  332. data/docs/jobs.html +4 -4
  333. data/docs/keyword-injection.html +4 -4
  334. data/docs/layouts.html +6 -6
  335. data/docs/lsp.html +4 -4
  336. data/docs/markdown-examples.html +4 -4
  337. data/docs/middleware.html +4 -4
  338. data/docs/overview.html +4 -4
  339. data/docs/pages.html +4 -4
  340. data/docs/recipes/alternate-layouts.html +4 -4
  341. data/docs/recipes/authentication.html +5 -5
  342. data/docs/recipes/blank-layouts.html +4 -4
  343. data/docs/recipes/custom-flash.html +4 -4
  344. data/docs/recipes/indexed-forms.html +4 -4
  345. data/docs/recipes/migrations.html +125 -0
  346. data/docs/recipes/text-field-component.html +4 -4
  347. data/docs/roadmap.html +4 -4
  348. data/docs/routes.html +4 -4
  349. data/docs/security.html +4 -4
  350. data/docs/seed-data.html +4 -4
  351. data/docs/space-time-continuum.html +4 -4
  352. data/docs/tutorial.html +4 -4
  353. data/docs/unit-tests.html +4 -4
  354. data/docs/why.html +4 -4
  355. data/lib/brut/cli/apps/db.rb +2 -0
  356. data/lib/brut/cli/apps/scaffold.rb +77 -0
  357. data/lib/brut/cli/command.rb +1 -2
  358. data/lib/brut/framework/config.rb +7 -0
  359. data/lib/brut/front_end/components/constraint_violations.rb +2 -2
  360. data/lib/brut/front_end/components/i18n_translations.rb +6 -10
  361. data/lib/brut/front_end/form.rb +5 -2
  362. data/lib/brut/junk_drawer.rb +53 -0
  363. data/lib/brut/version.rb +1 -1
  364. metadata +32 -25
  365. data/docs/assets/chunks/@localSearchIndexroot.DkpwyjLd.js +0 -1
  366. data/docs/assets/dev-environment.md.Dy6EldaM.lean.js +0 -1
  367. /data/docs/assets/{components.md.DP8maNoF.lean.js → components.md.BfeWD9sX.lean.js} +0 -0
  368. /data/docs/assets/{configuration.md.BDXwuZHU.lean.js → configuration.md.DoSBNc0H.lean.js} +0 -0
  369. /data/docs/assets/{form-constraints.md.x5tNpTTI.lean.js → form-constraints.md.DK5adCgM.lean.js} +0 -0
  370. /data/docs/assets/{forms.md.BwBNYrrL.lean.js → forms.md.DFveP5g_.lean.js} +0 -0
  371. /data/docs/assets/{getting-started.md.B4LlHfav.lean.js → getting-started.md.DZWjCVC0.lean.js} +0 -0
  372. /data/docs/assets/{handlers.md.Chyri6KA.lean.js → handlers.md.h84MMB1R.lean.js} +0 -0
  373. /data/docs/assets/{i18n.md.xQhiGo1G.lean.js → i18n.md.BAm9t9JJ.lean.js} +0 -0
  374. /data/docs/assets/{layouts.md.CJGDFY-m.lean.js → layouts.md.CVGl9xIO.lean.js} +0 -0
@@ -107,7 +107,7 @@
107
107
 
108
108
 
109
109
 
110
- <strong class="classes">Classes:</strong> <span class='object_link'><a href="Scaffold/Action.html" title="Brut::CLI::Apps::Scaffold::Action (class)">Action</a></span>, <span class='object_link'><a href="Scaffold/Component.html" title="Brut::CLI::Apps::Scaffold::Component (class)">Component</a></span>, <span class='object_link'><a href="Scaffold/CustomElementTest.html" title="Brut::CLI::Apps::Scaffold::CustomElementTest (class)">CustomElementTest</a></span>, <span class='object_link'><a href="Scaffold/E2ETest.html" title="Brut::CLI::Apps::Scaffold::E2ETest (class)">E2ETest</a></span>, <span class='object_link'><a href="Scaffold/Form.html" title="Brut::CLI::Apps::Scaffold::Form (class)">Form</a></span>, <span class='object_link'><a href="Scaffold/Page.html" title="Brut::CLI::Apps::Scaffold::Page (class)">Page</a></span>, <span class='object_link'><a href="Scaffold/RoutesEditor.html" title="Brut::CLI::Apps::Scaffold::RoutesEditor (class)">RoutesEditor</a></span>, <span class='object_link'><a href="Scaffold/Test.html" title="Brut::CLI::Apps::Scaffold::Test (class)">Test</a></span>
110
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Scaffold/Action.html" title="Brut::CLI::Apps::Scaffold::Action (class)">Action</a></span>, <span class='object_link'><a href="Scaffold/Component.html" title="Brut::CLI::Apps::Scaffold::Component (class)">Component</a></span>, <span class='object_link'><a href="Scaffold/CustomElementTest.html" title="Brut::CLI::Apps::Scaffold::CustomElementTest (class)">CustomElementTest</a></span>, <span class='object_link'><a href="Scaffold/DbModel.html" title="Brut::CLI::Apps::Scaffold::DbModel (class)">DbModel</a></span>, <span class='object_link'><a href="Scaffold/E2ETest.html" title="Brut::CLI::Apps::Scaffold::E2ETest (class)">E2ETest</a></span>, <span class='object_link'><a href="Scaffold/Form.html" title="Brut::CLI::Apps::Scaffold::Form (class)">Form</a></span>, <span class='object_link'><a href="Scaffold/Page.html" title="Brut::CLI::Apps::Scaffold::Page (class)">Page</a></span>, <span class='object_link'><a href="Scaffold/RoutesEditor.html" title="Brut::CLI::Apps::Scaffold::RoutesEditor (class)">RoutesEditor</a></span>, <span class='object_link'><a href="Scaffold/Test.html" title="Brut::CLI::Apps::Scaffold::Test (class)">Test</a></span>
111
111
 
112
112
 
113
113
  </p>
@@ -243,7 +243,7 @@
243
243
  </div>
244
244
 
245
245
  <div id="footer">
246
- Generated on Thu Jul 10 13:41:04 2025 by
246
+ Generated on Sat Jul 12 21:25:21 2025 by
247
247
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
248
248
  0.9.37 (ruby-3.4.4).
249
249
  </div>
@@ -456,7 +456,7 @@
456
456
  </div>
457
457
 
458
458
  <div id="footer">
459
- Generated on Thu Jul 10 13:41:04 2025 by
459
+ Generated on Sat Jul 12 21:25:21 2025 by
460
460
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
461
461
  0.9.37 (ruby-3.4.4).
462
462
  </div>
@@ -397,7 +397,7 @@
397
397
  </div>
398
398
 
399
399
  <div id="footer">
400
- Generated on Thu Jul 10 13:41:04 2025 by
400
+ Generated on Sat Jul 12 21:25:21 2025 by
401
401
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
402
402
  0.9.37 (ruby-3.4.4).
403
403
  </div>
@@ -252,7 +252,7 @@
252
252
  </div>
253
253
 
254
254
  <div id="footer">
255
- Generated on Thu Jul 10 13:41:04 2025 by
255
+ Generated on Sat Jul 12 21:25:21 2025 by
256
256
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
257
257
  0.9.37 (ruby-3.4.4).
258
258
  </div>
@@ -568,7 +568,7 @@
568
568
  </div>
569
569
 
570
570
  <div id="footer">
571
- Generated on Thu Jul 10 13:41:04 2025 by
571
+ Generated on Sat Jul 12 21:25:21 2025 by
572
572
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
573
573
  0.9.37 (ruby-3.4.4).
574
574
  </div>
@@ -243,7 +243,7 @@
243
243
  </div>
244
244
 
245
245
  <div id="footer">
246
- Generated on Thu Jul 10 13:41:04 2025 by
246
+ Generated on Sat Jul 12 21:25:21 2025 by
247
247
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
248
248
  0.9.37 (ruby-3.4.4).
249
249
  </div>
@@ -115,7 +115,7 @@
115
115
  </div>
116
116
 
117
117
  <div id="footer">
118
- Generated on Thu Jul 10 13:41:03 2025 by
118
+ Generated on Sat Jul 12 21:25:20 2025 by
119
119
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
120
120
  0.9.37 (ruby-3.4.4).
121
121
  </div>
@@ -116,7 +116,7 @@
116
116
 
117
117
  </div><div id="subclasses">
118
118
  <h2>Direct Known Subclasses</h2>
119
- <p class="children"><span class='object_link'><a href="Apps/BuildAssets/All.html" title="Brut::CLI::Apps::BuildAssets::All (class)">Apps::BuildAssets::All</a></span>, <span class='object_link'><a href="Apps/BuildAssets/CSS.html" title="Brut::CLI::Apps::BuildAssets::CSS (class)">Apps::BuildAssets::CSS</a></span>, <span class='object_link'><a href="Apps/BuildAssets/Images.html" title="Brut::CLI::Apps::BuildAssets::Images (class)">Apps::BuildAssets::Images</a></span>, <span class='object_link'><a href="Apps/BuildAssets/JS.html" title="Brut::CLI::Apps::BuildAssets::JS (class)">Apps::BuildAssets::JS</a></span>, <span class='object_link'><a href="Apps/DB/Create.html" title="Brut::CLI::Apps::DB::Create (class)">Apps::DB::Create</a></span>, <span class='object_link'><a href="Apps/DB/Drop.html" title="Brut::CLI::Apps::DB::Drop (class)">Apps::DB::Drop</a></span>, <span class='object_link'><a href="Apps/DB/Migrate.html" title="Brut::CLI::Apps::DB::Migrate (class)">Apps::DB::Migrate</a></span>, <span class='object_link'><a href="Apps/DB/NewMigration.html" title="Brut::CLI::Apps::DB::NewMigration (class)">Apps::DB::NewMigration</a></span>, <span class='object_link'><a href="Apps/DB/Rebuild.html" title="Brut::CLI::Apps::DB::Rebuild (class)">Apps::DB::Rebuild</a></span>, <span class='object_link'><a href="Apps/DB/Seed.html" title="Brut::CLI::Apps::DB::Seed (class)">Apps::DB::Seed</a></span>, <span class='object_link'><a href="Apps/DB/Status.html" title="Brut::CLI::Apps::DB::Status (class)">Apps::DB::Status</a></span>, <span class='object_link'><a href="Apps/HerokuContainerBasedDeploy/Deploy.html" title="Brut::CLI::Apps::HerokuContainerBasedDeploy::Deploy (class)">Apps::HerokuContainerBasedDeploy::Deploy</a></span>, <span class='object_link'><a href="Apps/Scaffold/Action.html" title="Brut::CLI::Apps::Scaffold::Action (class)">Apps::Scaffold::Action</a></span>, <span class='object_link'><a href="Apps/Scaffold/Component.html" title="Brut::CLI::Apps::Scaffold::Component (class)">Apps::Scaffold::Component</a></span>, <span class='object_link'><a href="Apps/Scaffold/CustomElementTest.html" title="Brut::CLI::Apps::Scaffold::CustomElementTest (class)">Apps::Scaffold::CustomElementTest</a></span>, <span class='object_link'><a href="Apps/Scaffold/E2ETest.html" title="Brut::CLI::Apps::Scaffold::E2ETest (class)">Apps::Scaffold::E2ETest</a></span>, <span class='object_link'><a href="Apps/Scaffold/Page.html" title="Brut::CLI::Apps::Scaffold::Page (class)">Apps::Scaffold::Page</a></span>, <span class='object_link'><a href="Apps/Scaffold/Test.html" title="Brut::CLI::Apps::Scaffold::Test (class)">Apps::Scaffold::Test</a></span>, <span class='object_link'><a href="Apps/Test/Audit.html" title="Brut::CLI::Apps::Test::Audit (class)">Apps::Test::Audit</a></span>, <span class='object_link'><a href="Apps/Test/Js.html" title="Brut::CLI::Apps::Test::Js (class)">Apps::Test::Js</a></span>, <span class='object_link'><a href="Apps/Test/Run.html" title="Brut::CLI::Apps::Test::Run (class)">Apps::Test::Run</a></span></p>
119
+ <p class="children"><span class='object_link'><a href="Apps/BuildAssets/All.html" title="Brut::CLI::Apps::BuildAssets::All (class)">Apps::BuildAssets::All</a></span>, <span class='object_link'><a href="Apps/BuildAssets/Css.html" title="Brut::CLI::Apps::BuildAssets::Css (class)">Apps::BuildAssets::Css</a></span>, <span class='object_link'><a href="Apps/BuildAssets/Images.html" title="Brut::CLI::Apps::BuildAssets::Images (class)">Apps::BuildAssets::Images</a></span>, <span class='object_link'><a href="Apps/BuildAssets/Js.html" title="Brut::CLI::Apps::BuildAssets::Js (class)">Apps::BuildAssets::Js</a></span>, <span class='object_link'><a href="Apps/DB/Create.html" title="Brut::CLI::Apps::DB::Create (class)">Apps::DB::Create</a></span>, <span class='object_link'><a href="Apps/DB/Drop.html" title="Brut::CLI::Apps::DB::Drop (class)">Apps::DB::Drop</a></span>, <span class='object_link'><a href="Apps/DB/Migrate.html" title="Brut::CLI::Apps::DB::Migrate (class)">Apps::DB::Migrate</a></span>, <span class='object_link'><a href="Apps/DB/NewMigration.html" title="Brut::CLI::Apps::DB::NewMigration (class)">Apps::DB::NewMigration</a></span>, <span class='object_link'><a href="Apps/DB/Rebuild.html" title="Brut::CLI::Apps::DB::Rebuild (class)">Apps::DB::Rebuild</a></span>, <span class='object_link'><a href="Apps/DB/Seed.html" title="Brut::CLI::Apps::DB::Seed (class)">Apps::DB::Seed</a></span>, <span class='object_link'><a href="Apps/DB/Status.html" title="Brut::CLI::Apps::DB::Status (class)">Apps::DB::Status</a></span>, <span class='object_link'><a href="Apps/HerokuContainerBasedDeploy/Deploy.html" title="Brut::CLI::Apps::HerokuContainerBasedDeploy::Deploy (class)">Apps::HerokuContainerBasedDeploy::Deploy</a></span>, <span class='object_link'><a href="Apps/Scaffold/Action.html" title="Brut::CLI::Apps::Scaffold::Action (class)">Apps::Scaffold::Action</a></span>, <span class='object_link'><a href="Apps/Scaffold/Component.html" title="Brut::CLI::Apps::Scaffold::Component (class)">Apps::Scaffold::Component</a></span>, <span class='object_link'><a href="Apps/Scaffold/CustomElementTest.html" title="Brut::CLI::Apps::Scaffold::CustomElementTest (class)">Apps::Scaffold::CustomElementTest</a></span>, <span class='object_link'><a href="Apps/Scaffold/DbModel.html" title="Brut::CLI::Apps::Scaffold::DbModel (class)">Apps::Scaffold::DbModel</a></span>, <span class='object_link'><a href="Apps/Scaffold/E2ETest.html" title="Brut::CLI::Apps::Scaffold::E2ETest (class)">Apps::Scaffold::E2ETest</a></span>, <span class='object_link'><a href="Apps/Scaffold/Page.html" title="Brut::CLI::Apps::Scaffold::Page (class)">Apps::Scaffold::Page</a></span>, <span class='object_link'><a href="Apps/Scaffold/Test.html" title="Brut::CLI::Apps::Scaffold::Test (class)">Apps::Scaffold::Test</a></span>, <span class='object_link'><a href="Apps/Test/Audit.html" title="Brut::CLI::Apps::Test::Audit (class)">Apps::Test::Audit</a></span>, <span class='object_link'><a href="Apps/Test/Js.html" title="Brut::CLI::Apps::Test::Js (class)">Apps::Test::Js</a></span>, <span class='object_link'><a href="Apps/Test/Run.html" title="Brut::CLI::Apps::Test::Run (class)">Apps::Test::Run</a></span></p>
120
120
  </div>
121
121
 
122
122
 
@@ -1687,11 +1687,11 @@ This will <em>not</em> be called if anything caused execution to be aborted.</p>
1687
1687
  <pre class="lines">
1688
1688
 
1689
1689
 
1690
- 205
1691
- 206</pre>
1690
+ 204
1691
+ 205</pre>
1692
1692
  </td>
1693
1693
  <td>
1694
- <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 205</span>
1694
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 204</span>
1695
1695
 
1696
1696
  <span class='kw'>def</span> <span class='id identifier rubyid_after_bootstrap'>after_bootstrap</span><span class='lparen'>(</span><span class='label'>app:</span><span class='rparen'>)</span>
1697
1697
  <span class='kw'>end</span></pre>
@@ -1742,12 +1742,12 @@ This will <em>not</em> be called if anything caused execution to be aborted.</p>
1742
1742
  <pre class="lines">
1743
1743
 
1744
1744
 
1745
+ 238
1745
1746
  239
1746
- 240
1747
- 241</pre>
1747
+ 240</pre>
1748
1748
  </td>
1749
1749
  <td>
1750
- <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 239</span>
1750
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 238</span>
1751
1751
 
1752
1752
  <span class='kw'>def</span> <span class='id identifier rubyid_args'>args</span> <span class='op'>=</span> <span class='ivar'>@args</span>
1753
1753
  <span class='comment'># @!visibility public
@@ -1813,11 +1813,11 @@ to everything <span class='object_link'><a href="#execute-instance_method" title
1813
1813
  <pre class="lines">
1814
1814
 
1815
1815
 
1816
- 198
1817
- 199</pre>
1816
+ 197
1817
+ 198</pre>
1818
1818
  </td>
1819
1819
  <td>
1820
- <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 198</span>
1820
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 197</span>
1821
1821
 
1822
1822
  <span class='kw'>def</span> <span class='id identifier rubyid_before_execute'>before_execute</span>
1823
1823
  <span class='kw'>end</span></pre>
@@ -1966,10 +1966,10 @@ to complete as desired in that way.</p>
1966
1966
  <pre class="lines">
1967
1967
 
1968
1968
 
1969
- 245</pre>
1969
+ 244</pre>
1970
1970
  </td>
1971
1971
  <td>
1972
- <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 245</span>
1972
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 244</span>
1973
1973
 
1974
1974
  <span class='kw'>def</span> <span class='id identifier rubyid_err'>err</span> <span class='op'>=</span> <span class='ivar'>@err</span></pre>
1975
1975
  </td>
@@ -2000,8 +2000,6 @@ to complete as desired in that way.</p>
2000
2000
  </ul>
2001
2001
 
2002
2002
 
2003
- <p>something instead of raising an exception.</p>
2004
-
2005
2003
 
2006
2004
  </div>
2007
2005
  </div>
@@ -2018,7 +2016,7 @@ to complete as desired in that way.</p>
2018
2016
 
2019
2017
 
2020
2018
  &mdash;
2021
- <div class='inline'><p>a description of what happened during processing. It is preferable to try to return</p>
2019
+ <div class='inline'><p>a description of what happened during processing. It is preferable to try to return something instead of raising an exception.</p>
2022
2020
  </div>
2023
2021
 
2024
2022
  </li>
@@ -2061,12 +2059,12 @@ to complete as desired in that way.</p>
2061
2059
  <pre class="lines">
2062
2060
 
2063
2061
 
2062
+ 189
2064
2063
  190
2065
- 191
2066
- 192</pre>
2064
+ 191</pre>
2067
2065
  </td>
2068
2066
  <td>
2069
- <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 190</span>
2067
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 189</span>
2070
2068
 
2071
2069
  <span class='kw'>def</span> <span class='id identifier rubyid_execute'>execute</span>
2072
2070
  <span class='id identifier rubyid_abstract_method!'>abstract_method!</span>
@@ -2118,12 +2116,12 @@ to complete as desired in that way.</p>
2118
2116
  <pre class="lines">
2119
2117
 
2120
2118
 
2119
+ 235
2121
2120
  236
2122
- 237
2123
- 238</pre>
2121
+ 237</pre>
2124
2122
  </td>
2125
2123
  <td>
2126
- <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 236</span>
2124
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 235</span>
2127
2125
 
2128
2126
  <span class='kw'>def</span> <span class='id identifier rubyid_global_options'>global_options</span> <span class='op'>=</span> <span class='ivar'>@global_options</span>
2129
2127
  <span class='comment'># @!visibility public
@@ -2211,12 +2209,12 @@ the built-in <span class='object_link'><a href="Apps/DB.html" title="Brut::CLI::
2211
2209
  <pre class="lines">
2212
2210
 
2213
2211
 
2212
+ 224
2214
2213
  225
2215
- 226
2216
- 227</pre>
2214
+ 226</pre>
2217
2215
  </td>
2218
2216
  <td>
2219
- <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 225</span>
2217
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 224</span>
2220
2218
 
2221
2219
  <span class='kw'>def</span> <span class='id identifier rubyid_handle_bootstrap_exception'>handle_bootstrap_exception</span><span class='lparen'>(</span><span class='id identifier rubyid_ex'>ex</span><span class='rparen'>)</span>
2222
2220
  <span class='id identifier rubyid_raise'>raise</span> <span class='id identifier rubyid_ex'>ex</span>
@@ -2268,12 +2266,12 @@ the built-in <span class='object_link'><a href="Apps/DB.html" title="Brut::CLI::
2268
2266
  <pre class="lines">
2269
2267
 
2270
2268
 
2269
+ 232
2271
2270
  233
2272
- 234
2273
- 235</pre>
2271
+ 234</pre>
2274
2272
  </td>
2275
2273
  <td>
2276
- <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 233</span>
2274
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 232</span>
2277
2275
 
2278
2276
  <span class='kw'>def</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='ivar'>@command_options</span>
2279
2277
  <span class='comment'># @!visibility public
@@ -2325,12 +2323,12 @@ the built-in <span class='object_link'><a href="Apps/DB.html" title="Brut::CLI::
2325
2323
  <pre class="lines">
2326
2324
 
2327
2325
 
2326
+ 241
2328
2327
  242
2329
- 243
2330
- 244</pre>
2328
+ 243</pre>
2331
2329
  </td>
2332
2330
  <td>
2333
- <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 242</span>
2331
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/command.rb', line 241</span>
2334
2332
 
2335
2333
  <span class='kw'>def</span> <span class='id identifier rubyid_out'>out</span> <span class='op'>=</span> <span class='ivar'>@out</span>
2336
2334
  <span class='comment'># @!visibility public
@@ -2417,7 +2415,7 @@ the built-in <span class='object_link'><a href="Apps/DB.html" title="Brut::CLI::
2417
2415
  </div>
2418
2416
 
2419
2417
  <div id="footer">
2420
- Generated on Thu Jul 10 13:41:03 2025 by
2418
+ Generated on Sat Jul 12 21:25:21 2025 by
2421
2419
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
2422
2420
  0.9.37 (ruby-3.4.4).
2423
2421
  </div>
@@ -129,7 +129,7 @@ trace.</p>
129
129
  </div>
130
130
 
131
131
  <div id="footer">
132
- Generated on Thu Jul 10 13:41:03 2025 by
132
+ Generated on Sat Jul 12 21:25:21 2025 by
133
133
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
134
134
  0.9.37 (ruby-3.4.4).
135
135
  </div>
@@ -654,7 +654,7 @@
654
654
  </div>
655
655
 
656
656
  <div id="footer">
657
- Generated on Thu Jul 10 13:41:04 2025 by
657
+ Generated on Sat Jul 12 21:25:21 2025 by
658
658
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
659
659
  0.9.37 (ruby-3.4.4).
660
660
  </div>
@@ -665,7 +665,7 @@ command.</p>
665
665
  </div>
666
666
 
667
667
  <div id="footer">
668
- Generated on Thu Jul 10 13:41:03 2025 by
668
+ Generated on Sat Jul 12 21:25:20 2025 by
669
669
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
670
670
  0.9.37 (ruby-3.4.4).
671
671
  </div>
@@ -551,7 +551,7 @@ instead, as it will not raise an exception.</p>
551
551
  </div>
552
552
 
553
553
  <div id="footer">
554
- Generated on Thu Jul 10 13:41:04 2025 by
554
+ Generated on Sat Jul 12 21:25:21 2025 by
555
555
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
556
556
  0.9.37 (ruby-3.4.4).
557
557
  </div>
@@ -235,7 +235,7 @@ error message given the global/command optiona dichotomy.</p>
235
235
  </div>
236
236
 
237
237
  <div id="footer">
238
- Generated on Thu Jul 10 13:41:03 2025 by
238
+ Generated on Sat Jul 12 21:25:21 2025 by
239
239
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
240
240
  0.9.37 (ruby-3.4.4).
241
241
  </div>
@@ -792,7 +792,7 @@ line.</p>
792
792
  </div>
793
793
 
794
794
  <div id="footer">
795
- Generated on Thu Jul 10 13:41:04 2025 by
795
+ Generated on Sat Jul 12 21:25:21 2025 by
796
796
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
797
797
  0.9.37 (ruby-3.4.4).
798
798
  </div>
@@ -689,7 +689,7 @@ it's intended to be piped into another app.</p>
689
689
  </div>
690
690
 
691
691
  <div id="footer">
692
- Generated on Thu Jul 10 13:41:03 2025 by
692
+ Generated on Sat Jul 12 21:25:21 2025 by
693
693
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
694
694
  0.9.37 (ruby-3.4.4).
695
695
  </div>
@@ -441,7 +441,7 @@
441
441
  </div>
442
442
 
443
443
  <div id="footer">
444
- Generated on Thu Jul 10 13:41:03 2025 by
444
+ Generated on Sat Jul 12 21:25:21 2025 by
445
445
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
446
446
  0.9.37 (ruby-3.4.4).
447
447
  </div>
@@ -253,7 +253,7 @@ it via <code>bin/clean-files</code>, you'd create <code>bin/clean-files</code> l
253
253
  </div>
254
254
 
255
255
  <div id="footer">
256
- Generated on Thu Jul 10 13:41:03 2025 by
256
+ Generated on Sat Jul 12 21:25:20 2025 by
257
257
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
258
258
  0.9.37 (ruby-3.4.4).
259
259
  </div>
@@ -215,7 +215,7 @@
215
215
  </div>
216
216
 
217
217
  <div id="footer">
218
- Generated on Thu Jul 10 13:41:04 2025 by
218
+ Generated on Sat Jul 12 21:25:21 2025 by
219
219
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
220
220
  0.9.37 (ruby-3.4.4).
221
221
  </div>
@@ -1087,7 +1087,7 @@ actions where an app needs to exist inside some organizational context.</p>
1087
1087
  </div>
1088
1088
 
1089
1089
  <div id="footer">
1090
- Generated on Thu Jul 10 13:41:04 2025 by
1090
+ Generated on Sat Jul 12 21:25:21 2025 by
1091
1091
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1092
1092
  0.9.37 (ruby-3.4.4).
1093
1093
  </div>
@@ -602,7 +602,14 @@ connection to your database.</p>
602
602
  426
603
603
  427
604
604
  428
605
- 429</pre>
605
+ 429
606
+ 430
607
+ 431
608
+ 432
609
+ 433
610
+ 434
611
+ 435
612
+ 436</pre>
606
613
  </td>
607
614
  <td>
608
615
  <pre class="code"><span class="info file"># File 'lib/brut/framework/config.rb', line 12</span>
@@ -802,6 +809,13 @@ connection to your database.</p>
802
809
  <span class='id identifier rubyid_back_end_src_dir'>back_end_src_dir</span> <span class='op'>/</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>data_models</span><span class='tstring_end'>&quot;</span></span>
803
810
  <span class='kw'>end</span>
804
811
 
812
+ <span class='id identifier rubyid_c'>c</span><span class='period'>.</span><span class='id identifier rubyid_store_ensured_path'>store_ensured_path</span><span class='lparen'>(</span>
813
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>data_models_specs_dir</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
814
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Path to the root of all data model specs</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
815
+ <span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_app_specs_dir'>app_specs_dir</span><span class='op'>|</span>
816
+ <span class='id identifier rubyid_app_specs_dir'>app_specs_dir</span> <span class='op'>/</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>back_end</span><span class='tstring_end'>&quot;</span></span> <span class='op'>/</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>data_models</span><span class='tstring_end'>&quot;</span></span>
817
+ <span class='kw'>end</span>
818
+
805
819
  <span class='id identifier rubyid_c'>c</span><span class='period'>.</span><span class='id identifier rubyid_store_ensured_path'>store_ensured_path</span><span class='lparen'>(</span>
806
820
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>migrations_dir</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
807
821
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Path to the DB migrations</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
@@ -1035,7 +1049,7 @@ connection to your database.</p>
1035
1049
  </div>
1036
1050
 
1037
1051
  <div id="footer">
1038
- Generated on Thu Jul 10 13:41:04 2025 by
1052
+ Generated on Sat Jul 12 21:25:21 2025 by
1039
1053
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1040
1054
  0.9.37 (ruby-3.4.4).
1041
1055
  </div>
@@ -1450,7 +1450,7 @@ The names of the parameters must match the name of another configuration value.<
1450
1450
  </div>
1451
1451
 
1452
1452
  <div id="footer">
1453
- Generated on Thu Jul 10 13:41:04 2025 by
1453
+ Generated on Sat Jul 12 21:25:21 2025 by
1454
1454
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1455
1455
  0.9.37 (ruby-3.4.4).
1456
1456
  </div>
@@ -130,7 +130,7 @@ for Brut-specific error conditions.</p>
130
130
  </div>
131
131
 
132
132
  <div id="footer">
133
- Generated on Thu Jul 10 13:41:04 2025 by
133
+ Generated on Sat Jul 12 21:25:21 2025 by
134
134
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
135
135
  0.9.37 (ruby-3.4.4).
136
136
  </div>
@@ -222,7 +222,7 @@ makes sense.</p>
222
222
  </div>
223
223
 
224
224
  <div id="footer">
225
- Generated on Thu Jul 10 13:41:04 2025 by
225
+ Generated on Sat Jul 12 21:25:22 2025 by
226
226
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
227
227
  0.9.37 (ruby-3.4.4).
228
228
  </div>
@@ -224,7 +224,7 @@ prevented</p>
224
224
  </div>
225
225
 
226
226
  <div id="footer">
227
- Generated on Thu Jul 10 13:41:04 2025 by
227
+ Generated on Sat Jul 12 21:25:21 2025 by
228
228
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
229
229
  0.9.37 (ruby-3.4.4).
230
230
  </div>
@@ -247,7 +247,7 @@ have not been set.</p>
247
247
  </div>
248
248
 
249
249
  <div id="footer">
250
- Generated on Thu Jul 10 13:41:05 2025 by
250
+ Generated on Sat Jul 12 21:25:22 2025 by
251
251
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
252
252
  0.9.37 (ruby-3.4.4).
253
253
  </div>
@@ -263,7 +263,7 @@ the one provided by standard library exceptions like <code>KeyError</code></p>
263
263
  </div>
264
264
 
265
265
  <div id="footer">
266
- Generated on Thu Jul 10 13:41:05 2025 by
266
+ Generated on Sat Jul 12 21:25:22 2025 by
267
267
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
268
268
  0.9.37 (ruby-3.4.4).
269
269
  </div>
@@ -461,7 +461,7 @@
461
461
  </div>
462
462
 
463
463
  <div id="footer">
464
- Generated on Thu Jul 10 13:41:05 2025 by
464
+ Generated on Sat Jul 12 21:25:22 2025 by
465
465
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
466
466
  0.9.37 (ruby-3.4.4).
467
467
  </div>
@@ -298,7 +298,7 @@
298
298
  </div>
299
299
 
300
300
  <div id="footer">
301
- Generated on Thu Jul 10 13:41:04 2025 by
301
+ Generated on Sat Jul 12 21:25:22 2025 by
302
302
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
303
303
  0.9.37 (ruby-3.4.4).
304
304
  </div>
@@ -224,7 +224,7 @@ support the same features, but for technical reasons one of the APIs does not.</
224
224
  </div>
225
225
 
226
226
  <div id="footer">
227
- Generated on Thu Jul 10 13:41:04 2025 by
227
+ Generated on Sat Jul 12 21:25:22 2025 by
228
228
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
229
229
  0.9.37 (ruby-3.4.4).
230
230
  </div>
@@ -341,7 +341,7 @@ state of the system is such that it would never be misused.</p>
341
341
  </div>
342
342
 
343
343
  <div id="footer">
344
- Generated on Thu Jul 10 13:41:03 2025 by
344
+ Generated on Sat Jul 12 21:25:20 2025 by
345
345
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
346
346
  0.9.37 (ruby-3.4.4).
347
347
  </div>
@@ -382,7 +382,7 @@ For example, if you accept a string but know it should be a number, pass in <cod
382
382
  </div>
383
383
 
384
384
  <div id="footer">
385
- Generated on Thu Jul 10 13:41:03 2025 by
385
+ Generated on Sat Jul 12 21:25:21 2025 by
386
386
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
387
387
  0.9.37 (ruby-3.4.4).
388
388
  </div>
@@ -851,7 +851,7 @@ to external resources.</p>
851
851
  </div>
852
852
 
853
853
  <div id="footer">
854
- Generated on Thu Jul 10 13:41:04 2025 by
854
+ Generated on Sat Jul 12 21:25:21 2025 by
855
855
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
856
856
  0.9.37 (ruby-3.4.4).
857
857
  </div>
@@ -638,7 +638,7 @@ to the configuration values. But, you do you.</p>
638
638
  </div>
639
639
 
640
640
  <div id="footer">
641
- Generated on Thu Jul 10 13:41:04 2025 by
641
+ Generated on Sat Jul 12 21:25:22 2025 by
642
642
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
643
643
  0.9.37 (ruby-3.4.4).
644
644
  </div>
@@ -119,7 +119,7 @@
119
119
  </div>
120
120
 
121
121
  <div id="footer">
122
- Generated on Thu Jul 10 13:41:03 2025 by
122
+ Generated on Sat Jul 12 21:25:20 2025 by
123
123
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
124
124
  0.9.37 (ruby-3.4.4).
125
125
  </div>
@@ -307,7 +307,7 @@
307
307
  </div>
308
308
 
309
309
  <div id="footer">
310
- Generated on Thu Jul 10 13:41:04 2025 by
310
+ Generated on Sat Jul 12 21:25:22 2025 by
311
311
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
312
312
  0.9.37 (ruby-3.4.4).
313
313
  </div>
@@ -326,7 +326,7 @@ looking</p>
326
326
  </div>
327
327
 
328
328
  <div id="footer">
329
- Generated on Thu Jul 10 13:41:03 2025 by
329
+ Generated on Sat Jul 12 21:25:20 2025 by
330
330
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
331
331
  0.9.37 (ruby-3.4.4).
332
332
  </div>
@@ -355,7 +355,7 @@ method <span class='object_link'><a href="#component_name-class_method" title="B
355
355
  </div>
356
356
 
357
357
  <div id="footer">
358
- Generated on Thu Jul 10 13:41:04 2025 by
358
+ Generated on Sat Jul 12 21:25:21 2025 by
359
359
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
360
360
  0.9.37 (ruby-3.4.4).
361
361
  </div>