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
@@ -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:21 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>
@@ -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:21 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>
@@ -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>
@@ -404,7 +404,7 @@ Your subclass of this class is a standalone object that will operate on a form.<
404
404
  </div>
405
405
 
406
406
  <div id="footer">
407
- Generated on Thu Jul 10 13:41:05 2025 by
407
+ Generated on Sat Jul 12 21:25:22 2025 by
408
408
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
409
409
  0.9.37 (ruby-3.4.4).
410
410
  </div>
@@ -118,7 +118,7 @@ data integrity, use your databases constraints and other features.</p>
118
118
  </div>
119
119
 
120
120
  <div id="footer">
121
- Generated on Thu Jul 10 13:41:03 2025 by
121
+ Generated on Sat Jul 12 21:25:20 2025 by
122
122
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
123
123
  0.9.37 (ruby-3.4.4).
124
124
  </div>
@@ -122,7 +122,7 @@ that than it is the front end.</p>
122
122
  </div>
123
123
 
124
124
  <div id="footer">
125
- Generated on Thu Jul 10 13:41:03 2025 by
125
+ Generated on Sat Jul 12 21:25:20 2025 by
126
126
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
127
127
  0.9.37 (ruby-3.4.4).
128
128
  </div>
@@ -1591,7 +1591,7 @@ caused execution to be aborted.</p>
1591
1591
  </div>
1592
1592
 
1593
1593
  <div id="footer">
1594
- Generated on Thu Jul 10 13:41:03 2025 by
1594
+ Generated on Sat Jul 12 21:25:21 2025 by
1595
1595
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1596
1596
  0.9.37 (ruby-3.4.4).
1597
1597
  </div>
@@ -481,7 +481,7 @@
481
481
  </div>
482
482
 
483
483
  <div id="footer">
484
- Generated on Thu Jul 10 13:41:04 2025 by
484
+ Generated on Sat Jul 12 21:25:21 2025 by
485
485
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
486
486
  0.9.37 (ruby-3.4.4).
487
487
  </div>
@@ -242,7 +242,7 @@
242
242
  <span class='id identifier rubyid_out'>out</span><span class='period'>.</span><span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Removing </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_asset_metadata_file'>asset_metadata_file</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
243
243
  <span class='const'>FileUtils</span><span class='period'>.</span><span class='id identifier rubyid_rm_f'>rm_f</span><span class='lparen'>(</span><span class='id identifier rubyid_asset_metadata_file'>asset_metadata_file</span><span class='rparen'>)</span>
244
244
  <span class='kw'>end</span>
245
- <span class='id identifier rubyid_delegate_to_commands'>delegate_to_commands</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Images.html" title="Brut::CLI::Apps::BuildAssets::Images (class)">Images</a></span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="JS.html" title="Brut::CLI::Apps::BuildAssets::JS (class)">JS</a></span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="CSS.html" title="Brut::CLI::Apps::BuildAssets::CSS (class)">CSS</a></span></span><span class='rparen'>)</span>
245
+ <span class='id identifier rubyid_delegate_to_commands'>delegate_to_commands</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Images.html" title="Brut::CLI::Apps::BuildAssets::Images (class)">Images</a></span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="Js.html" title="Brut::CLI::Apps::BuildAssets::Js (class)">Js</a></span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="Css.html" title="Brut::CLI::Apps::BuildAssets::Css (class)">Css</a></span></span><span class='rparen'>)</span>
246
246
  <span class='kw'>end</span></pre>
247
247
  </td>
248
248
  </tr>
@@ -254,7 +254,7 @@
254
254
  </div>
255
255
 
256
256
  <div id="footer">
257
- Generated on Thu Jul 10 13:41:04 2025 by
257
+ Generated on Sat Jul 12 21:25:21 2025 by
258
258
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
259
259
  0.9.37 (ruby-3.4.4).
260
260
  </div>
@@ -4,7 +4,7 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>
7
- Class: Brut::CLI::Apps::BuildAssets::CSS
7
+ Class: Brut::CLI::Apps::BuildAssets::Css
8
8
 
9
9
  &mdash; Documentation by YARD 0.9.37
10
10
 
@@ -15,7 +15,7 @@
15
15
  <link rel="stylesheet" href="../../../../css/common.css" type="text/css" />
16
16
 
17
17
  <script type="text/javascript">
18
- pathId = "Brut::CLI::Apps::BuildAssets::CSS";
18
+ pathId = "Brut::CLI::Apps::BuildAssets::Css";
19
19
  relpath = '../../../../';
20
20
  </script>
21
21
 
@@ -39,7 +39,7 @@
39
39
  <a href="../../../../_index.html">Index (C)</a> &raquo;
40
40
  <span class='title'><span class='object_link'><a href="../../../../Brut.html" title="Brut (module)">Brut</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../../CLI.html" title="Brut::CLI (module)">CLI</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../Apps.html" title="Brut::CLI::Apps (module)">Apps</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../BuildAssets.html" title="Brut::CLI::Apps::BuildAssets (class)">BuildAssets</a></span></span>
41
41
  &raquo;
42
- <span class="title">CSS</span>
42
+ <span class="title">Css</span>
43
43
 
44
44
  </div>
45
45
 
@@ -59,7 +59,7 @@
59
59
  <div class="clear"></div>
60
60
  </div>
61
61
 
62
- <div id="content"><h1>Class: Brut::CLI::Apps::BuildAssets::CSS
62
+ <div id="content"><h1>Class: Brut::CLI::Apps::BuildAssets::Css
63
63
 
64
64
 
65
65
 
@@ -76,7 +76,7 @@
76
76
 
77
77
  <li class="next"><span class='object_link'><a href="../../Command.html" title="Brut::CLI::Command (class)">Command</a></span></li>
78
78
 
79
- <li class="next">Brut::CLI::Apps::BuildAssets::CSS</li>
79
+ <li class="next">Brut::CLI::Apps::BuildAssets::Css</li>
80
80
 
81
81
  </ul>
82
82
  <a href="#" class="inheritanceTree">show all</a>
@@ -296,7 +296,7 @@
296
296
  </div>
297
297
 
298
298
  <div id="footer">
299
- Generated on Thu Jul 10 13:41:04 2025 by
299
+ Generated on Sat Jul 12 21:25:21 2025 by
300
300
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
301
301
  0.9.37 (ruby-3.4.4).
302
302
  </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>
@@ -4,7 +4,7 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>
7
- Class: Brut::CLI::Apps::BuildAssets::JS
7
+ Class: Brut::CLI::Apps::BuildAssets::Js
8
8
 
9
9
  &mdash; Documentation by YARD 0.9.37
10
10
 
@@ -15,7 +15,7 @@
15
15
  <link rel="stylesheet" href="../../../../css/common.css" type="text/css" />
16
16
 
17
17
  <script type="text/javascript">
18
- pathId = "Brut::CLI::Apps::BuildAssets::JS";
18
+ pathId = "Brut::CLI::Apps::BuildAssets::Js";
19
19
  relpath = '../../../../';
20
20
  </script>
21
21
 
@@ -39,7 +39,7 @@
39
39
  <a href="../../../../_index.html">Index (J)</a> &raquo;
40
40
  <span class='title'><span class='object_link'><a href="../../../../Brut.html" title="Brut (module)">Brut</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../../CLI.html" title="Brut::CLI (module)">CLI</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../Apps.html" title="Brut::CLI::Apps (module)">Apps</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../BuildAssets.html" title="Brut::CLI::Apps::BuildAssets (class)">BuildAssets</a></span></span>
41
41
  &raquo;
42
- <span class="title">JS</span>
42
+ <span class="title">Js</span>
43
43
 
44
44
  </div>
45
45
 
@@ -59,7 +59,7 @@
59
59
  <div class="clear"></div>
60
60
  </div>
61
61
 
62
- <div id="content"><h1>Class: Brut::CLI::Apps::BuildAssets::JS
62
+ <div id="content"><h1>Class: Brut::CLI::Apps::BuildAssets::Js
63
63
 
64
64
 
65
65
 
@@ -76,7 +76,7 @@
76
76
 
77
77
  <li class="next"><span class='object_link'><a href="../../Command.html" title="Brut::CLI::Command (class)">Command</a></span></li>
78
78
 
79
- <li class="next">Brut::CLI::Apps::BuildAssets::JS</li>
79
+ <li class="next">Brut::CLI::Apps::BuildAssets::Js</li>
80
80
 
81
81
  </ul>
82
82
  <a href="#" class="inheritanceTree">show all</a>
@@ -304,7 +304,7 @@
304
304
  </div>
305
305
 
306
306
  <div id="footer">
307
- Generated on Thu Jul 10 13:41:04 2025 by
307
+ Generated on Sat Jul 12 21:25:21 2025 by
308
308
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
309
309
  0.9.37 (ruby-3.4.4).
310
310
  </div>
@@ -107,7 +107,7 @@
107
107
 
108
108
 
109
109
 
110
- <strong class="classes">Classes:</strong> <span class='object_link'><a href="BuildAssets/All.html" title="Brut::CLI::Apps::BuildAssets::All (class)">All</a></span>, <span class='object_link'><a href="BuildAssets/CSS.html" title="Brut::CLI::Apps::BuildAssets::CSS (class)">CSS</a></span>, <span class='object_link'><a href="BuildAssets/Images.html" title="Brut::CLI::Apps::BuildAssets::Images (class)">Images</a></span>, <span class='object_link'><a href="BuildAssets/JS.html" title="Brut::CLI::Apps::BuildAssets::JS (class)">JS</a></span>
110
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="BuildAssets/All.html" title="Brut::CLI::Apps::BuildAssets::All (class)">All</a></span>, <span class='object_link'><a href="BuildAssets/Css.html" title="Brut::CLI::Apps::BuildAssets::Css (class)">Css</a></span>, <span class='object_link'><a href="BuildAssets/Images.html" title="Brut::CLI::Apps::BuildAssets::Images (class)">Images</a></span>, <span class='object_link'><a href="BuildAssets/Js.html" title="Brut::CLI::Apps::BuildAssets::Js (class)">Js</a></span>
111
111
 
112
112
 
113
113
  </p>
@@ -173,7 +173,7 @@
173
173
  </div>
174
174
 
175
175
  <div id="footer">
176
- Generated on Thu Jul 10 13:41:04 2025 by
176
+ Generated on Sat Jul 12 21:25:21 2025 by
177
177
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
178
178
  0.9.37 (ruby-3.4.4).
179
179
  </div>
@@ -355,7 +355,7 @@
355
355
  </div>
356
356
 
357
357
  <div id="footer">
358
- Generated on Thu Jul 10 13:41:03 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>
@@ -347,7 +347,7 @@
347
347
  </div>
348
348
 
349
349
  <div id="footer">
350
- Generated on Thu Jul 10 13:41:03 2025 by
350
+ Generated on Sat Jul 12 21:25:21 2025 by
351
351
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
352
352
  0.9.37 (ruby-3.4.4).
353
353
  </div>
@@ -379,7 +379,7 @@
379
379
  </div>
380
380
 
381
381
  <div id="footer">
382
- Generated on Thu Jul 10 13:41:03 2025 by
382
+ Generated on Sat Jul 12 21:25:21 2025 by
383
383
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
384
384
  0.9.37 (ruby-3.4.4).
385
385
  </div>
@@ -293,7 +293,9 @@
293
293
  221
294
294
  222
295
295
  223
296
- 224</pre>
296
+ 224
297
+ 225
298
+ 226</pre>
297
299
  </td>
298
300
  <td>
299
301
  <pre class="code"><span class="info file"># File 'lib/brut/cli/apps/db.rb', line 208</span>
@@ -309,6 +311,8 @@
309
311
  <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>w</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_file'>file</span><span class='op'>|</span>
310
312
  <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Sequel.migration do</span><span class='tstring_end'>&quot;</span></span>
311
313
  <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> up do</span><span class='tstring_end'>&quot;</span></span>
314
+ <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> # See https://brutrb.com/recipes/migrations.html</span><span class='tstring_end'>&quot;</span></span>
315
+ <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> # for a recipe on writing migrations</span><span class='tstring_end'>&quot;</span></span>
312
316
  <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> end</span><span class='tstring_end'>&quot;</span></span>
313
317
  <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>end</span><span class='tstring_end'>&quot;</span></span>
314
318
  <span class='kw'>end</span>
@@ -325,7 +329,7 @@
325
329
  </div>
326
330
 
327
331
  <div id="footer">
328
- Generated on Thu Jul 10 13:41:03 2025 by
332
+ Generated on Sat Jul 12 21:25:21 2025 by
329
333
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
330
334
  0.9.37 (ruby-3.4.4).
331
335
  </div>
@@ -319,7 +319,7 @@
319
319
  </div>
320
320
 
321
321
  <div id="footer">
322
- Generated on Thu Jul 10 13:41:03 2025 by
322
+ Generated on Sat Jul 12 21:25:21 2025 by
323
323
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
324
324
  0.9.37 (ruby-3.4.4).
325
325
  </div>
@@ -337,7 +337,7 @@
337
337
  </div>
338
338
 
339
339
  <div id="footer">
340
- Generated on Thu Jul 10 13:41:03 2025 by
340
+ Generated on Sat Jul 12 21:25:21 2025 by
341
341
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
342
342
  0.9.37 (ruby-3.4.4).
343
343
  </div>
@@ -247,8 +247,6 @@
247
247
  <pre class="lines">
248
248
 
249
249
 
250
- 255
251
- 256
252
250
  257
253
251
  258
254
252
  259
@@ -267,10 +265,12 @@
267
265
  272
268
266
  273
269
267
  274
270
- 275</pre>
268
+ 275
269
+ 276
270
+ 277</pre>
271
271
  </td>
272
272
  <td>
273
- <pre class="code"><span class="info file"># File 'lib/brut/cli/apps/db.rb', line 255</span>
273
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/apps/db.rb', line 257</span>
274
274
 
275
275
  <span class='kw'>def</span> <span class='id identifier rubyid_execute'>execute</span>
276
276
  <span class='id identifier rubyid_database_name'>database_name</span> <span class='op'>=</span> <span class='const'>URI</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../../Brut.html" title="Brut (module)">Brut</a></span></span><span class='period'>.</span><span class='id identifier rubyid_container'><span class='object_link'><a href="../../../../Brut.html#container-class_method" title="Brut.container (method)">container</a></span></span><span class='period'>.</span><span class='id identifier rubyid_database_url'>database_url</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_path'>path</span>
@@ -313,8 +313,6 @@
313
313
  <pre class="lines">
314
314
 
315
315
 
316
- 231
317
- 232
318
316
  233
319
317
  234
320
318
  235
@@ -335,10 +333,12 @@
335
333
  250
336
334
  251
337
335
  252
338
- 253</pre>
336
+ 253
337
+ 254
338
+ 255</pre>
339
339
  </td>
340
340
  <td>
341
- <pre class="code"><span class="info file"># File 'lib/brut/cli/apps/db.rb', line 231</span>
341
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/apps/db.rb', line 233</span>
342
342
 
343
343
  <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>
344
344
  <span class='kw'>case</span> <span class='id identifier rubyid_ex'>ex</span>
@@ -373,7 +373,7 @@
373
373
  </div>
374
374
 
375
375
  <div id="footer">
376
- Generated on Thu Jul 10 13:41:03 2025 by
376
+ Generated on Sat Jul 12 21:25:21 2025 by
377
377
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
378
378
  0.9.37 (ruby-3.4.4).
379
379
  </div>
@@ -173,7 +173,7 @@
173
173
  </div>
174
174
 
175
175
  <div id="footer">
176
- Generated on Thu Jul 10 13:41:03 2025 by
176
+ Generated on Sat Jul 12 21:25:21 2025 by
177
177
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
178
178
  0.9.37 (ruby-3.4.4).
179
179
  </div>
@@ -260,7 +260,7 @@
260
260
  </div>
261
261
 
262
262
  <div id="footer">
263
- Generated on Thu Jul 10 13:41:04 2025 by
263
+ Generated on Sat Jul 12 21:25:21 2025 by
264
264
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
265
265
  0.9.37 (ruby-3.4.4).
266
266
  </div>
@@ -247,7 +247,7 @@
247
247
  </div>
248
248
 
249
249
  <div id="footer">
250
- Generated on Thu Jul 10 13:41:04 2025 by
250
+ Generated on Sat Jul 12 21:25:21 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>
@@ -575,7 +575,7 @@
575
575
  </div>
576
576
 
577
577
  <div id="footer">
578
- Generated on Thu Jul 10 13:41:05 2025 by
578
+ Generated on Sat Jul 12 21:25:22 2025 by
579
579
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
580
580
  0.9.37 (ruby-3.4.4).
581
581
  </div>
@@ -186,7 +186,7 @@
186
186
  </div>
187
187
 
188
188
  <div id="footer">
189
- Generated on Thu Jul 10 13:41:05 2025 by
189
+ Generated on Sat Jul 12 21:25:22 2025 by
190
190
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
191
191
  0.9.37 (ruby-3.4.4).
192
192
  </div>
@@ -293,7 +293,7 @@
293
293
  </div>
294
294
 
295
295
  <div id="footer">
296
- Generated on Thu Jul 10 13:41:04 2025 by
296
+ Generated on Sat Jul 12 21:25:21 2025 by
297
297
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
298
298
  0.9.37 (ruby-3.4.4).
299
299
  </div>
@@ -360,9 +360,7 @@
360
360
  533
361
361
  534
362
362
  535
363
- 536
364
- 537
365
- 538</pre>
363
+ 536</pre>
366
364
  </td>
367
365
  <td>
368
366
  <pre class="code"><span class="info file"># File 'lib/brut/cli/apps/scaffold.rb', line 414</span>
@@ -415,20 +413,18 @@
415
413
  <span class='id identifier rubyid_form_code'>form_code</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>%{</span><span class='tstring_content'>class </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_form_class_name'>form_class_name</span><span class='embexpr_end'>}</span><span class='tstring_content'> &lt; AppForm
416
414
  input :some_field, minlength: 3
417
415
  end</span><span class='tstring_end'>}</span></span>
418
- <span class='id identifier rubyid_handle_method_code'>handle_method_code</span> <span class='op'>=</span> <span class='kw'>if</span> <span class='id identifier rubyid_form'>form</span>
419
- <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>raise &quot;You need to implement your Handler\#{form.class.input_definitions.length &lt; 2 ? &quot; and likely your Form as well&quot; : &quot;&quot;}&quot;</span><span class='tstring_end'>&#39;</span></span>
420
- <span class='kw'>else</span>
421
- <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>raise &quot;You need to implement your Handler&quot;</span><span class='tstring_end'>&#39;</span></span>
422
- <span class='kw'>end</span>
416
+ <span class='id identifier rubyid_handle_method_code'>handle_method_code</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>raise &quot;You need to implement your Handler&quot;</span><span class='tstring_end'>&#39;</span></span>
423
417
  <span class='id identifier rubyid_handler_code'>handler_code</span> <span class='op'>=</span> <span class='kw'>begin</span>
424
418
  <span class='id identifier rubyid_handle_params'>handle_params</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
425
419
  <span class='kw'>if</span> <span class='id identifier rubyid_form'>form</span>
426
420
  <span class='id identifier rubyid_handle_params'>handle_params</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:form</span>
427
421
  <span class='kw'>end</span>
428
422
  <span class='id identifier rubyid_handle_params'>handle_params</span> <span class='op'>+=</span> <span class='id identifier rubyid_route'>route</span><span class='period'>.</span><span class='id identifier rubyid_path_params'>path_params</span>
429
- <span class='id identifier rubyid_handle_params_code'>handle_params_code</span> <span class='op'>=</span> <span class='id identifier rubyid_handle_params'>handle_params</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_it'>it</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='tstring_end'>&quot;</span></span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>, </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
423
+ <span class='id identifier rubyid_initializer_params_code'>initializer_params_code</span> <span class='op'>=</span> <span class='id identifier rubyid_handle_params'>handle_params</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_it'>it</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='tstring_end'>&quot;</span></span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>, </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
430
424
  <span class='tstring'><span class='tstring_beg'>%{</span><span class='tstring_content'>class </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_handler_class_name'>handler_class_name</span><span class='embexpr_end'>}</span><span class='tstring_content'> &lt; AppHandler
431
- def handle(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_handle_params_code'>handle_params_code</span><span class='embexpr_end'>}</span><span class='tstring_content'>) # add other args here as needed
425
+ def initialize(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_initializer_params_code'>initializer_params_code</span><span class='embexpr_end'>}</span><span class='tstring_content'>) # add other args here as needed
426
+ end
427
+ def handle
432
428
  </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_handle_method_code'>handle_method_code</span><span class='embexpr_end'>}</span><span class='tstring_content'>
433
429
  end
434
430
  end</span><span class='tstring_end'>}</span></span>
@@ -437,10 +433,10 @@ end</span><span class='tstring_end'>}</span></span>
437
433
  <span class='id identifier rubyid_spec_code'>spec_code</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>%{</span><span class='tstring_content'>require &quot;spec_helper&quot;
438
434
 
439
435
  RSpec.describe </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_handler_class_name'>handler_class_name</span><span class='embexpr_end'>}</span><span class='tstring_content'> do
440
- subject(:handler) { described_class.new }
441
436
  describe &quot;#handle!&quot; do
442
437
  it &quot;needs tests&quot; do
443
438
  expect(true).to eq(false)
439
+ # Make sure to call handle! (not handle)
444
440
  end
445
441
  end
446
442
  end</span><span class='tstring_end'>}</span></span>
@@ -502,7 +498,7 @@ end</span><span class='tstring_end'>}</span></span>
502
498
  </div>
503
499
 
504
500
  <div id="footer">
505
- Generated on Thu Jul 10 13:41:04 2025 by
501
+ Generated on Sat Jul 12 21:25:21 2025 by
506
502
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
507
503
  0.9.37 (ruby-3.4.4).
508
504
  </div>
@@ -388,7 +388,7 @@ end</span><span class='tstring_end'>}</span></span>
388
388
  </div>
389
389
 
390
390
  <div id="footer">
391
- Generated on Thu Jul 10 13:41:04 2025 by
391
+ Generated on Sat Jul 12 21:25:21 2025 by
392
392
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
393
393
  0.9.37 (ruby-3.4.4).
394
394
  </div>
@@ -224,6 +224,8 @@
224
224
  <pre class="lines">
225
225
 
226
226
 
227
+ 551
228
+ 552
227
229
  553
228
230
  554
229
231
  555
@@ -284,12 +286,10 @@
284
286
  610
285
287
  611
286
288
  612
287
- 613
288
- 614
289
- 615</pre>
289
+ 613</pre>
290
290
  </td>
291
291
  <td>
292
- <pre class="code"><span class="info file"># File 'lib/brut/cli/apps/scaffold.rb', line 553</span>
292
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/apps/scaffold.rb', line 551</span>
293
293
 
294
294
  <span class='kw'>def</span> <span class='id identifier rubyid_execute'>execute</span>
295
295
  <span class='kw'>if</span> <span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
@@ -364,7 +364,7 @@ assert.fail(&quot;test goes here&quot;)
364
364
  </div>
365
365
 
366
366
  <div id="footer">
367
- Generated on Thu Jul 10 13:41:04 2025 by
367
+ Generated on Sat Jul 12 21:25:21 2025 by
368
368
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
369
369
  0.9.37 (ruby-3.4.4).
370
370
  </div>