brut 0.0.27 → 0.0.28

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 (359) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/brutrb.com/.vitepress/config.mjs +1 -0
  4. data/brutrb.com/dev-environment.md +6 -5
  5. data/brutrb.com/doc-conventions.md +1 -1
  6. data/brutrb.com/getting-started.md +64 -28
  7. data/brutrb.com/instrumentation.md +12 -0
  8. data/brutrb.com/layouts.md +130 -0
  9. data/docs/404.html +2 -2
  10. data/docs/ai.html +5 -5
  11. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  12. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  13. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  14. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  15. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  16. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  17. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  18. data/docs/api/Brut/BackEnd.html +1 -1
  19. data/docs/api/Brut/CLI/App.html +38 -13
  20. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  21. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
  22. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +2 -2
  23. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +2 -2
  24. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +2 -2
  25. data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
  26. data/docs/api/Brut/CLI/Apps/DB/Create.html +2 -2
  27. data/docs/api/Brut/CLI/Apps/DB/Drop.html +2 -2
  28. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +9 -3
  29. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +11 -11
  30. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +2 -2
  31. data/docs/api/Brut/CLI/Apps/DB/Seed.html +2 -2
  32. data/docs/api/Brut/CLI/Apps/DB/Status.html +12 -12
  33. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  34. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +270 -0
  35. data/docs/api/Brut/CLI/Apps/DeployBase.html +257 -0
  36. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +585 -0
  37. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +196 -0
  38. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  39. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +2 -2
  40. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +2 -2
  41. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +2 -2
  42. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +2 -2
  43. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +2 -2
  44. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  45. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +2 -2
  46. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +1 -1
  47. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +2 -2
  48. data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
  49. data/docs/api/Brut/CLI/Apps/Test/Audit.html +12 -10
  50. data/docs/api/Brut/CLI/Apps/Test/E2e.html +8 -8
  51. data/docs/api/Brut/CLI/Apps/Test/JS.html +9 -9
  52. data/docs/api/Brut/CLI/Apps/Test/Run.html +18 -18
  53. data/docs/api/Brut/CLI/Apps/Test.html +1 -1
  54. data/docs/api/Brut/CLI/Apps.html +2 -2
  55. data/docs/api/Brut/CLI/Command.html +113 -28
  56. data/docs/api/Brut/CLI/Error.html +1 -1
  57. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  58. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  59. data/docs/api/Brut/CLI/Executor.html +169 -38
  60. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  61. data/docs/api/Brut/CLI/Options.html +68 -19
  62. data/docs/api/Brut/CLI/Output.html +1 -1
  63. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  64. data/docs/api/Brut/CLI.html +1 -1
  65. data/docs/api/Brut/FactoryBot.html +1 -1
  66. data/docs/api/Brut/Framework/App.html +1 -1
  67. data/docs/api/Brut/Framework/Config.html +1 -1
  68. data/docs/api/Brut/Framework/Container.html +110 -29
  69. data/docs/api/Brut/Framework/Error.html +1 -1
  70. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +89 -1
  71. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  72. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  73. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  74. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  75. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  76. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  77. data/docs/api/Brut/Framework/Errors.html +31 -8
  78. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
  79. data/docs/api/Brut/Framework/MCP.html +1 -1
  80. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  81. data/docs/api/Brut/Framework.html +1 -1
  82. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  83. data/docs/api/Brut/FrontEnd/Component/Helpers.html +36 -26
  84. data/docs/api/Brut/FrontEnd/Component.html +7 -7
  85. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +1 -1
  86. data/docs/api/Brut/FrontEnd/Components/FormTag.html +37 -29
  87. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +1 -1
  88. data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
  89. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
  90. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +20 -117
  91. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +25 -23
  92. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +73 -380
  93. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +22 -138
  94. data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
  95. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
  96. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
  97. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
  98. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
  99. data/docs/api/Brut/FrontEnd/Components.html +23 -2
  100. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  101. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  102. data/docs/api/Brut/FrontEnd/Form.html +1 -1
  103. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +24 -68
  104. data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
  105. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +4 -4
  106. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
  107. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
  108. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  109. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
  110. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  111. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +72 -22
  112. data/docs/api/Brut/FrontEnd/Forms.html +1 -1
  113. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  114. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  115. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  116. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  117. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  118. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  119. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +1 -1
  120. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  121. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  122. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  123. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  124. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  125. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  126. data/docs/api/Brut/FrontEnd/Layout.html +1 -1
  127. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  128. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  129. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  130. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  131. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +6 -2
  132. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  133. data/docs/api/Brut/FrontEnd/Page.html +1 -1
  134. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
  135. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  136. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  137. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  138. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  139. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  140. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  141. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  142. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  143. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  144. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  145. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  146. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  147. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  148. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  149. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  150. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  151. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  152. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  153. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  154. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  155. data/docs/api/Brut/FrontEnd.html +1 -1
  156. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  157. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  158. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  159. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  160. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  161. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  162. data/docs/api/Brut/I18n.html +1 -1
  163. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  164. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
  165. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
  166. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
  167. data/docs/api/Brut/Instrumentation.html +1 -1
  168. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
  169. data/docs/api/Brut/SinatraHelpers.html +1 -1
  170. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  171. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  172. data/docs/api/Brut/SpecSupport/E2ETestServer.html +20 -20
  173. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  174. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  175. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  176. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  177. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  178. data/docs/api/Brut/SpecSupport/HandlerSupport.html +2 -2
  179. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +142 -0
  180. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +142 -0
  181. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +155 -0
  182. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +55 -25
  183. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +149 -0
  184. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +46 -19
  185. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +149 -0
  186. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +149 -0
  187. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +165 -0
  188. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +158 -0
  189. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +156 -0
  190. data/docs/api/Brut/SpecSupport/Matchers.html +2 -2
  191. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +24 -24
  192. data/docs/api/Brut/SpecSupport/RSpecSetup.html +55 -20
  193. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  194. data/docs/api/Brut/SpecSupport.html +1 -1
  195. data/docs/api/Brut.html +1 -1
  196. data/docs/api/Clock.html +1 -1
  197. data/docs/api/RichString.html +1 -1
  198. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  199. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +5 -1
  200. data/docs/api/Sequel/Extensions/BrutMigrations.html +36 -28
  201. data/docs/api/Sequel/Extensions.html +1 -1
  202. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  203. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  204. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  205. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  206. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  207. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  208. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  209. data/docs/api/Sequel/Plugins.html +1 -1
  210. data/docs/api/Sequel.html +1 -1
  211. data/docs/api/SpecSupport/Matchers/BeABug.html +143 -0
  212. data/docs/api/_index.html +92 -1
  213. data/docs/api/class_list.html +1 -1
  214. data/docs/api/file.README.html +1 -1
  215. data/docs/api/index.html +1 -1
  216. data/docs/api/method_list.html +392 -336
  217. data/docs/api/top-level-namespace.html +1 -1
  218. data/docs/assets/{ai.md.tZrjP9im.js → ai.md._6HCDL6d.js} +1 -1
  219. data/docs/assets/ai.md._6HCDL6d.lean.js +1 -0
  220. data/docs/assets/{app.D_yaTITQ.js → app.BX81XO4N.js} +1 -1
  221. data/docs/assets/chunks/@localSearchIndexroot.CoYzciVi.js +1 -0
  222. data/docs/assets/chunks/{VPLocalSearchBox.B2-ZzyTY.js → VPLocalSearchBox.gABXcTWp.js} +1 -1
  223. data/docs/assets/chunks/{theme.CfGFVRvE.js → theme.DwUXXAL3.js} +2 -2
  224. data/docs/assets/{components.md.eCttGlN-.js → components.md.CRUMdRoN.js} +1 -1
  225. data/docs/assets/{configuration.md.BRriU0cL.js → configuration.md.BGHl8oRC.js} +1 -1
  226. data/docs/assets/{dev-environment.md.BNc8AYiK.js → dev-environment.md.GZv6xvi9.js} +1 -1
  227. data/docs/assets/doc-conventions.md.-kN3Xo5C.js +1 -0
  228. data/docs/assets/{doc-conventions.md.DCfRXXi-.lean.js → doc-conventions.md.-kN3Xo5C.lean.js} +1 -1
  229. data/docs/assets/{forms.md.CBTYQ_Cz.js → forms.md.B-koVgyw.js} +23 -23
  230. data/docs/assets/{forms.md.CBTYQ_Cz.lean.js → forms.md.B-koVgyw.lean.js} +1 -1
  231. data/docs/assets/getting-started.md.Ciz82L0m.js +25 -0
  232. data/docs/assets/getting-started.md.Ciz82L0m.lean.js +1 -0
  233. data/docs/assets/{instrumentation.md.CL6ax7nT.js → instrumentation.md.a9Pjps4P.js} +2 -2
  234. data/docs/assets/{instrumentation.md.CL6ax7nT.lean.js → instrumentation.md.a9Pjps4P.lean.js} +1 -1
  235. data/docs/assets/layouts.md.cPnh3NId.js +51 -0
  236. data/docs/assets/layouts.md.cPnh3NId.lean.js +1 -0
  237. data/docs/assets/lsp.md.Bsu-f6VU.js +1 -0
  238. data/docs/assets/lsp.md.Bsu-f6VU.lean.js +1 -0
  239. data/docs/assets/{overview.md.CDalkuxV.js → overview.md.C5wlBcR5.js} +3 -3
  240. data/docs/assets/recipes_authentication.md.CAsXf7hk.js +1 -0
  241. data/docs/assets/recipes_authentication.md.CAsXf7hk.lean.js +1 -0
  242. data/docs/assets.html +4 -4
  243. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  244. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  245. data/docs/brut-js/api/Autosubmit.html +1 -1
  246. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  247. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  248. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  249. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  250. data/docs/brut-js/api/BufferedLogger.html +1 -1
  251. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  252. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  253. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  254. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  255. data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
  256. data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
  257. data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
  258. data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
  259. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  260. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  261. data/docs/brut-js/api/Form.html +1 -1
  262. data/docs/brut-js/api/Form.js.html +1 -1
  263. data/docs/brut-js/api/I18nTranslation.html +1 -1
  264. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  265. data/docs/brut-js/api/LocaleDetection.html +1 -1
  266. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  267. data/docs/brut-js/api/Logger.html +1 -1
  268. data/docs/brut-js/api/Logger.js.html +1 -1
  269. data/docs/brut-js/api/Message.html +1 -1
  270. data/docs/brut-js/api/Message.js.html +1 -1
  271. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  272. data/docs/brut-js/api/RichString.html +1 -1
  273. data/docs/brut-js/api/RichString.js.html +1 -1
  274. data/docs/brut-js/api/Tabs.html +1 -1
  275. data/docs/brut-js/api/Tabs.js.html +1 -1
  276. data/docs/brut-js/api/Tracing.html +1 -1
  277. data/docs/brut-js/api/Tracing.js.html +1 -1
  278. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  279. data/docs/brut-js/api/external-Performance.html +1 -1
  280. data/docs/brut-js/api/external-Promise.html +1 -1
  281. data/docs/brut-js/api/external-ValidityState.html +1 -1
  282. data/docs/brut-js/api/external-Window.html +1 -1
  283. data/docs/brut-js/api/external-fetch.html +1 -1
  284. data/docs/brut-js/api/global.html +1 -1
  285. data/docs/brut-js/api/index.html +1 -1
  286. data/docs/brut-js/api/index.js.html +1 -1
  287. data/docs/brut-js/api/module-testing.html +1 -1
  288. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  289. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  290. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  291. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  292. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  293. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  294. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  295. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  296. data/docs/brut-js/api/testing_index.js.html +1 -1
  297. data/docs/brut-js.html +4 -4
  298. data/docs/business-logic.html +4 -4
  299. data/docs/cli.html +4 -4
  300. data/docs/components.html +6 -6
  301. data/docs/configuration.html +5 -5
  302. data/docs/css.html +4 -4
  303. data/docs/custom-element-tests.html +4 -4
  304. data/docs/database-access.html +4 -4
  305. data/docs/database-schema.html +4 -4
  306. data/docs/deployment.html +4 -4
  307. data/docs/dev-environment.html +5 -5
  308. data/docs/doc-conventions.html +5 -5
  309. data/docs/end-to-end-tests.html +4 -4
  310. data/docs/flash-and-session.html +4 -4
  311. data/docs/forms.html +27 -27
  312. data/docs/getting-started.html +29 -6
  313. data/docs/handlers.html +4 -4
  314. data/docs/hashmap.json +1 -1
  315. data/docs/hooks.html +4 -4
  316. data/docs/i18n.html +4 -4
  317. data/docs/index.html +3 -3
  318. data/docs/instrumentation.html +5 -5
  319. data/docs/javascript.html +4 -4
  320. data/docs/jobs.html +4 -4
  321. data/docs/keyword-injection.html +4 -4
  322. data/docs/layouts.html +74 -0
  323. data/docs/lsp.html +24 -0
  324. data/docs/markdown-examples.html +4 -4
  325. data/docs/middleware.html +4 -4
  326. data/docs/not-released.html +4 -4
  327. data/docs/overview.html +8 -8
  328. data/docs/pages.html +5 -5
  329. data/docs/recipes/authentication.html +24 -0
  330. data/docs/routes.html +4 -4
  331. data/docs/security.html +4 -4
  332. data/docs/seed-data.html +4 -4
  333. data/docs/space-time-continuum.html +4 -4
  334. data/docs/tutorial.html +4 -4
  335. data/docs/unit-tests.html +4 -4
  336. data/lib/brut/cli/app.rb +7 -2
  337. data/lib/brut/cli/apps/deploy_base.rb +86 -0
  338. data/lib/brut/cli/apps/heroku_container_based_deploy.rb +194 -0
  339. data/lib/brut/cli/command.rb +7 -13
  340. data/lib/brut/cli/executor.rb +31 -5
  341. data/lib/brut/cli/options.rb +4 -0
  342. data/lib/brut/cli.rb +4 -3
  343. data/lib/brut/framework/container.rb +25 -7
  344. data/lib/brut/framework/errors/abstract_method.rb +7 -0
  345. data/lib/brut/framework/errors.rb +4 -2
  346. data/lib/brut/front_end/middlewares/reload_app.rb +2 -0
  347. data/lib/brut/spec_support/rspec_setup.rb +42 -2
  348. data/lib/brut/version.rb +1 -1
  349. data/lib/sequel/extensions/brut_instrumentation.rb +4 -0
  350. metadata +49 -23
  351. data/docs/assets/ai.md.tZrjP9im.lean.js +0 -1
  352. data/docs/assets/chunks/@localSearchIndexroot.BsN5i0Fi.js +0 -1
  353. data/docs/assets/doc-conventions.md.DCfRXXi-.js +0 -1
  354. data/docs/assets/getting-started.md.Bz2s1Vjb.js +0 -2
  355. data/docs/assets/getting-started.md.Bz2s1Vjb.lean.js +0 -1
  356. /data/docs/assets/{components.md.eCttGlN-.lean.js → components.md.CRUMdRoN.lean.js} +0 -0
  357. /data/docs/assets/{configuration.md.BRriU0cL.lean.js → configuration.md.BGHl8oRC.lean.js} +0 -0
  358. /data/docs/assets/{dev-environment.md.BNc8AYiK.lean.js → dev-environment.md.GZv6xvi9.lean.js} +0 -0
  359. /data/docs/assets/{overview.md.CDalkuxV.lean.js → overview.md.C5wlBcR5.lean.js} +0 -0
@@ -0,0 +1,142 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Brut::SpecSupport::Matchers::BePageFor
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../../../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Brut::SpecSupport::Matchers::BePageFor";
19
+ relpath = '../../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../../../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../../../_index.html">Index (B)</a> &raquo;
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="../../SpecSupport.html" title="Brut::SpecSupport (module)">SpecSupport</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Matchers.html" title="Brut::SpecSupport::Matchers (module)">Matchers</a></span></span>
41
+ &raquo;
42
+ <span class="title">BePageFor</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../../../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Brut::SpecSupport::Matchers::BePageFor
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Brut::SpecSupport::Matchers::BePageFor</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ <dl>
96
+ <dt>Defined in:</dt>
97
+ <dd>lib/brut/spec_support/matchers/be_page_for.rb</dd>
98
+ </dl>
99
+
100
+ </div>
101
+
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
104
+ <p>Matcher for end-to-end tests to assert that the current page
105
+ is the page you expect it to be. This is based on the
106
+ <span class='object_link'><a href="../../FrontEnd/Components/PageIdentifier.html" title="Brut::FrontEnd::Components::PageIdentifier (class)">FrontEnd::Components::PageIdentifier</a></span> component, which must
107
+ be included on the page for this matcher to work.</p>
108
+
109
+
110
+ </div>
111
+ </div>
112
+ <div class="tags">
113
+
114
+ <div class="examples">
115
+ <h4 class="tag_title">Examples:</h4>
116
+
117
+
118
+ <pre class="example code"><code><span class='id identifier rubyid_expect'>expect</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to'>to</span> <span class='id identifier rubyid_be_page_for'>be_page_for</span><span class='lparen'>(</span><span class='const'>HomePage</span><span class='rparen'>)</span></code></pre>
119
+
120
+ </div>
121
+
122
+
123
+ </div>
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+ </div>
133
+
134
+ <div id="footer">
135
+ Generated on Wed Jul 2 21:45:28 2025 by
136
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
137
+ 0.9.37 (ruby-3.4.4).
138
+ </div>
139
+
140
+ </div>
141
+ </body>
142
+ </html>
@@ -0,0 +1,155 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Brut::SpecSupport::Matchers::BeRoutingFor
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../../../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Brut::SpecSupport::Matchers::BeRoutingFor";
19
+ relpath = '../../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../../../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../../../_index.html">Index (B)</a> &raquo;
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="../../SpecSupport.html" title="Brut::SpecSupport (module)">SpecSupport</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Matchers.html" title="Brut::SpecSupport::Matchers (module)">Matchers</a></span></span>
41
+ &raquo;
42
+ <span class="title">BeRoutingFor</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../../../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Brut::SpecSupport::Matchers::BeRoutingFor
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Brut::SpecSupport::Matchers::BeRoutingFor</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ <dl>
96
+ <dt>Defined in:</dt>
97
+ <dd>lib/brut/spec_support/matchers/be_routing_for.rb</dd>
98
+ </dl>
99
+
100
+ </div>
101
+
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
104
+ <p>Matcher used for handlers (or any code that returns a <code>URI</code>)
105
+ to assert that the URI is for a given page with the given set of parameters</p>
106
+
107
+
108
+ </div>
109
+ </div>
110
+ <div class="tags">
111
+
112
+ <div class="examples">
113
+ <h4 class="tag_title">Examples:</h4>
114
+
115
+
116
+ <pre class="example code"><code><span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_handler'>handler</span><span class='period'>.</span><span class='id identifier rubyid_handle'>handle</span>
117
+ <span class='id identifier rubyid_expect'>expect</span><span class='lparen'>(</span><span class='id identifier rubyid_result'>result</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to'>to</span> <span class='id identifier rubyid_be_routing_for'>be_routing_for</span><span class='lparen'>(</span><span class='const'>HomePage</span><span class='rparen'>)</span></code></pre>
118
+
119
+
120
+ <h5 class="example_title"><div class='inline'><p>with parameters</p>
121
+ </div></h5>
122
+
123
+ <pre class="example code"><code><span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_handler'>handler</span><span class='period'>.</span><span class='id identifier rubyid_handle'>handle</span>
124
+ <span class='id identifier rubyid_expect'>expect</span><span class='lparen'>(</span><span class='id identifier rubyid_result'>result</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to'>to</span> <span class='id identifier rubyid_be_routing_for'>be_routing_for</span><span class='lparen'>(</span><span class='const'>WidgetsByWidgetIdPage</span><span class='comma'>,</span> <span class='label'>id:</span> <span class='id identifier rubyid_widget'>widget</span><span class='period'>.</span><span class='id identifier rubyid_external_id'>external_id</span><span class='rparen'>)</span></code></pre>
125
+
126
+
127
+ <h5 class="example_title"><div class='inline'><p>with anchor</p>
128
+ </div></h5>
129
+
130
+ <pre class="example code"><code><span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_handler'>handler</span><span class='period'>.</span><span class='id identifier rubyid_handle'>handle</span>
131
+ <span class='id identifier rubyid_expect'>expect</span><span class='lparen'>(</span><span class='id identifier rubyid_result'>result</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to'>to</span> <span class='id identifier rubyid_be_routing_for'>be_routing_for</span><span class='lparen'>(</span><span class='const'>MessagesPage</span><span class='comma'>,</span> <span class='label'>anchor:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>latest_message</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span></code></pre>
132
+
133
+ </div>
134
+
135
+
136
+ </div>
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+ </div>
146
+
147
+ <div id="footer">
148
+ Generated on Wed Jul 2 21:45:28 2025 by
149
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
150
+ 0.9.37 (ruby-3.4.4).
151
+ </div>
152
+
153
+ </div>
154
+ </body>
155
+ </html>
@@ -99,8 +99,38 @@
99
99
 
100
100
  </div>
101
101
 
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
104
+ <p>Matcher to check that a from has a specific constraint violation.</p>
105
+
106
+
107
+ </div>
108
+ </div>
109
+ <div class="tags">
110
+
111
+ <div class="examples">
112
+ <h4 class="tag_title">Examples:</h4>
113
+
114
+
115
+ <pre class="example code"><code><span class='id identifier rubyid_expect'>expect</span><span class='lparen'>(</span><span class='id identifier rubyid_form'>form</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to'>to</span> <span class='id identifier rubyid_have_constraint_violation'>have_constraint_violation</span><span class='lparen'>(</span><span class='symbol'>:email</span><span class='comma'>,</span> <span class='label'>key:</span> <span class='symbol'>:required</span><span class='rparen'>)</span></code></pre>
116
+
117
+
118
+ <h5 class="example_title"><div class='inline'><p>Index fields (requires that the third email field have a constraint violation)</p>
119
+ </div></h5>
120
+
121
+ <pre class="example code"><code><span class='id identifier rubyid_expect'>expect</span><span class='lparen'>(</span><span class='id identifier rubyid_form'>form</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to'>to</span> <span class='id identifier rubyid_have_constraint_violation'>have_constraint_violation</span><span class='lparen'>(</span><span class='symbol'>:email</span><span class='comma'>,</span> <span class='label'>key:</span> <span class='symbol'>:required</span><span class='comma'>,</span> <span class='label'>index:</span> <span class='int'>2</span><span class='rparen'>)</span></code></pre>
122
+
123
+
124
+ <h5 class="example_title"><div class='inline'><p>Negated</p>
125
+ </div></h5>
126
+
127
+ <pre class="example code"><code><span class='id identifier rubyid_expect'>expect</span><span class='lparen'>(</span><span class='id identifier rubyid_form'>form</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_not_to'>not_to</span> <span class='id identifier rubyid_have_constraint_violation'>have_constraint_violation</span><span class='lparen'>(</span><span class='symbol'>:email</span><span class='comma'>,</span> <span class='label'>key:</span> <span class='symbol'>:required</span><span class='rparen'>)</span></code></pre>
128
+
129
+ </div>
102
130
 
103
131
 
132
+ </div>
133
+
104
134
 
105
135
 
106
136
  <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
@@ -277,16 +307,6 @@
277
307
  <pre class="lines">
278
308
 
279
309
 
280
- 36
281
- 37
282
- 38
283
- 39
284
- 40
285
- 41
286
- 42
287
- 43
288
- 44
289
- 45
290
310
  46
291
311
  47
292
312
  48
@@ -305,10 +325,20 @@
305
325
  61
306
326
  62
307
327
  63
308
- 64</pre>
328
+ 64
329
+ 65
330
+ 66
331
+ 67
332
+ 68
333
+ 69
334
+ 70
335
+ 71
336
+ 72
337
+ 73
338
+ 74</pre>
309
339
  </td>
310
340
  <td>
311
- <pre class="code"><span class="info file"># File 'lib/brut/spec_support/matchers/have_constraint_violation.rb', line 36</span>
341
+ <pre class="code"><span class="info file"># File 'lib/brut/spec_support/matchers/have_constraint_violation.rb', line 46</span>
312
342
 
313
343
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_form'>form</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_index'>index</span><span class='rparen'>)</span>
314
344
  <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_form'>form</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</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='op'>::</span><span class='const'><span class='object_link'><a href="../../FrontEnd.html" title="Brut::FrontEnd (module)">FrontEnd</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../FrontEnd/Form.html" title="Brut::FrontEnd::Form (class)">Form</a></span></span><span class='rparen'>)</span>
@@ -376,12 +406,12 @@
376
406
  <pre class="lines">
377
407
 
378
408
 
379
- 33
380
- 34
381
- 35</pre>
409
+ 43
410
+ 44
411
+ 45</pre>
382
412
  </td>
383
413
  <td>
384
- <pre class="code"><span class="info file"># File 'lib/brut/spec_support/matchers/have_constraint_violation.rb', line 33</span>
414
+ <pre class="code"><span class="info file"># File 'lib/brut/spec_support/matchers/have_constraint_violation.rb', line 43</span>
385
415
 
386
416
  <span class='kw'>def</span> <span class='id identifier rubyid_fields_found'>fields_found</span>
387
417
  <span class='ivar'>@fields_found</span>
@@ -418,12 +448,12 @@
418
448
  <pre class="lines">
419
449
 
420
450
 
421
- 34
422
- 35
423
- 36</pre>
451
+ 44
452
+ 45
453
+ 46</pre>
424
454
  </td>
425
455
  <td>
426
- <pre class="code"><span class="info file"># File 'lib/brut/spec_support/matchers/have_constraint_violation.rb', line 34</span>
456
+ <pre class="code"><span class="info file"># File 'lib/brut/spec_support/matchers/have_constraint_violation.rb', line 44</span>
427
457
 
428
458
  <span class='kw'>def</span> <span class='id identifier rubyid_keys_on_field_found'>keys_on_field_found</span>
429
459
  <span class='ivar'>@keys_on_field_found</span>
@@ -478,10 +508,10 @@
478
508
  <pre class="lines">
479
509
 
480
510
 
481
- 67</pre>
511
+ 77</pre>
482
512
  </td>
483
513
  <td>
484
- <pre class="code"><span class="info file"># File 'lib/brut/spec_support/matchers/have_constraint_violation.rb', line 67</span>
514
+ <pre class="code"><span class="info file"># File 'lib/brut/spec_support/matchers/have_constraint_violation.rb', line 77</span>
485
515
 
486
516
  <span class='kw'>def</span> <span class='id identifier rubyid_found_field?'>found_field?</span> <span class='op'>=</span> <span class='ivar'>@found_field</span></pre>
487
517
  </td>
@@ -527,10 +557,10 @@
527
557
  <pre class="lines">
528
558
 
529
559
 
530
- 66</pre>
560
+ 76</pre>
531
561
  </td>
532
562
  <td>
533
- <pre class="code"><span class="info file"># File 'lib/brut/spec_support/matchers/have_constraint_violation.rb', line 66</span>
563
+ <pre class="code"><span class="info file"># File 'lib/brut/spec_support/matchers/have_constraint_violation.rb', line 76</span>
534
564
 
535
565
  <span class='kw'>def</span> <span class='id identifier rubyid_matches?'>matches?</span> <span class='op'>=</span> <span class='ivar'>@matches</span></pre>
536
566
  </td>
@@ -543,7 +573,7 @@
543
573
  </div>
544
574
 
545
575
  <div id="footer">
546
- Generated on Wed Jun 25 22:57:21 2025 by
576
+ Generated on Wed Jul 2 21:45:28 2025 by
547
577
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
548
578
  0.9.37 (ruby-3.4.4).
549
579
  </div>
@@ -0,0 +1,149 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Brut::SpecSupport::Matchers::HaveGenerated
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../../../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Brut::SpecSupport::Matchers::HaveGenerated";
19
+ relpath = '../../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../../../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../../../_index.html">Index (H)</a> &raquo;
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="../../SpecSupport.html" title="Brut::SpecSupport (module)">SpecSupport</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Matchers.html" title="Brut::SpecSupport::Matchers (module)">Matchers</a></span></span>
41
+ &raquo;
42
+ <span class="title">HaveGenerated</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../../../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Brut::SpecSupport::Matchers::HaveGenerated
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Brut::SpecSupport::Matchers::HaveGenerated</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ <dl>
96
+ <dt>Defined in:</dt>
97
+ <dd>lib/brut/spec_support/matchers/have_generated.rb</dd>
98
+ </dl>
99
+
100
+ </div>
101
+
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
104
+ <p>Matcher to check that a handler generated a specific page
105
+ (as opposed to redirected to a page). This works for components
106
+ as well, in the case of Ajax requests.</p>
107
+
108
+
109
+ </div>
110
+ </div>
111
+ <div class="tags">
112
+
113
+ <div class="examples">
114
+ <h4 class="tag_title">Examples:</h4>
115
+
116
+
117
+ <pre class="example code"><code><span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_handler'>handler</span><span class='period'>.</span><span class='id identifier rubyid_handle'>handle</span><span class='lparen'>(</span><span class='label'>form:</span><span class='rparen'>)</span>
118
+ <span class='id identifier rubyid_expect'>expect</span><span class='lparen'>(</span><span class='id identifier rubyid_result'>result</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to'>to</span> <span class='id identifier rubyid_have_generated'>have_generated</span><span class='lparen'>(</span><span class='const'>NewWidgetPage</span><span class='rparen'>)</span></code></pre>
119
+
120
+
121
+ <h5 class="example_title"><div class='inline'><p>Ajax request</p>
122
+ </div></h5>
123
+
124
+ <pre class="example code"><code><span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_handler'>handler</span><span class='period'>.</span><span class='id identifier rubyid_handle'>handle</span><span class='lparen'>(</span><span class='label'>form:</span><span class='comma'>,</span> <span class='label'>xhr:</span> <span class='kw'>true</span><span class='rparen'>)</span>
125
+ <span class='id identifier rubyid_expect'>expect</span><span class='lparen'>(</span><span class='id identifier rubyid_result'>result</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to'>to</span> <span class='id identifier rubyid_have_generated'>have_generated</span><span class='lparen'>(</span><span class='const'>WidgetResponseComponent</span><span class='rparen'>)</span></code></pre>
126
+
127
+ </div>
128
+
129
+
130
+ </div>
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+ </div>
140
+
141
+ <div id="footer">
142
+ Generated on Wed Jul 2 21:45:28 2025 by
143
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
144
+ 0.9.37 (ruby-3.4.4).
145
+ </div>
146
+
147
+ </div>
148
+ </body>
149
+ </html>