brut 0.3.1 → 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 (369) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -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/database-schema.md +22 -2
  13. data/brutrb.com/dev-environment.md +1 -0
  14. data/brutrb.com/form-constraints.md +2 -2
  15. data/brutrb.com/handlers.md +1 -1
  16. data/brutrb.com/i18n.md +2 -2
  17. data/brutrb.com/layouts.md +1 -1
  18. data/docs/404.html +2 -2
  19. data/docs/adrs.html +3 -3
  20. data/docs/ai.html +3 -3
  21. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  22. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  23. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  24. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  25. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  26. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  27. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  28. data/docs/api/Brut/BackEnd.html +1 -1
  29. data/docs/api/Brut/CLI/App.html +1 -1
  30. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  31. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
  32. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +6 -6
  33. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
  34. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +6 -6
  35. data/docs/api/Brut/CLI/Apps/BuildAssets.html +2 -2
  36. data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
  37. data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
  38. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
  39. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +6 -2
  40. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
  41. data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
  42. data/docs/api/Brut/CLI/Apps/DB/Status.html +9 -9
  43. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  44. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
  45. data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
  46. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
  47. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
  48. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  49. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +8 -12
  50. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
  51. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +5 -5
  52. data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +384 -0
  53. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
  54. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +5 -5
  55. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  56. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
  57. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +36 -36
  58. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
  59. data/docs/api/Brut/CLI/Apps/Scaffold.html +2 -2
  60. data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
  61. data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
  62. data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
  63. data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
  64. data/docs/api/Brut/CLI/Apps/Test.html +1 -1
  65. data/docs/api/Brut/CLI/Apps.html +1 -1
  66. data/docs/api/Brut/CLI/Command.html +29 -31
  67. data/docs/api/Brut/CLI/Error.html +1 -1
  68. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  69. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  70. data/docs/api/Brut/CLI/Executor.html +1 -1
  71. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  72. data/docs/api/Brut/CLI/Options.html +1 -1
  73. data/docs/api/Brut/CLI/Output.html +1 -1
  74. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  75. data/docs/api/Brut/CLI.html +1 -1
  76. data/docs/api/Brut/FactoryBot.html +1 -1
  77. data/docs/api/Brut/Framework/App.html +1 -1
  78. data/docs/api/Brut/Framework/Config.html +16 -2
  79. data/docs/api/Brut/Framework/Container.html +1 -1
  80. data/docs/api/Brut/Framework/Error.html +1 -1
  81. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
  82. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  83. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  84. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  85. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  86. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  87. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  88. data/docs/api/Brut/Framework/Errors.html +1 -1
  89. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
  90. data/docs/api/Brut/Framework/MCP.html +1 -1
  91. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  92. data/docs/api/Brut/Framework.html +1 -1
  93. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  94. data/docs/api/Brut/FrontEnd/Component/Helpers.html +1 -1
  95. data/docs/api/Brut/FrontEnd/Component.html +1 -1
  96. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +3 -3
  97. data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
  98. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +10 -14
  99. data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
  100. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
  101. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +1 -1
  102. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
  103. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +3 -3
  104. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +1 -1
  105. data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
  106. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
  107. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
  108. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
  109. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
  110. data/docs/api/Brut/FrontEnd/Components.html +1 -1
  111. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  112. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  113. data/docs/api/Brut/FrontEnd/Form.html +92 -20
  114. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
  115. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
  116. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
  117. data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
  118. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
  119. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
  120. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
  121. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  122. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
  123. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  124. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
  125. data/docs/api/Brut/FrontEnd/Forms.html +1 -1
  126. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  127. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  128. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  129. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  130. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  131. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  132. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +2 -2
  133. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  134. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  135. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  136. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  137. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  138. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  139. data/docs/api/Brut/FrontEnd/Layout.html +1 -1
  140. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  141. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  142. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  143. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  144. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
  145. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  146. data/docs/api/Brut/FrontEnd/Page.html +1 -1
  147. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
  148. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  149. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  150. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  151. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  152. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  153. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  154. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  155. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  156. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  157. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  158. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  159. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  160. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  161. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  162. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  163. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  164. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  165. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  166. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  167. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  168. data/docs/api/Brut/FrontEnd.html +1 -1
  169. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  170. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  171. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  172. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  173. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  174. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  175. data/docs/api/Brut/I18n.html +1 -1
  176. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  177. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
  178. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
  179. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
  180. data/docs/api/Brut/Instrumentation.html +1 -1
  181. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
  182. data/docs/api/Brut/SinatraHelpers.html +1 -1
  183. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  184. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  185. data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
  186. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  187. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  188. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  189. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  190. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  191. data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
  192. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
  193. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
  194. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
  195. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
  196. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
  197. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
  198. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
  199. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
  200. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
  201. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
  202. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
  203. data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
  204. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
  205. data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
  206. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  207. data/docs/api/Brut/SpecSupport.html +1 -1
  208. data/docs/api/Brut.html +1 -1
  209. data/docs/api/Clock.html +1 -1
  210. data/docs/api/ModuleName.html +595 -0
  211. data/docs/api/RichString.html +1 -1
  212. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  213. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
  214. data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
  215. data/docs/api/Sequel/Extensions.html +1 -1
  216. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  217. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  218. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  219. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  220. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  221. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  222. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  223. data/docs/api/Sequel/Plugins.html +1 -1
  224. data/docs/api/Sequel.html +1 -1
  225. data/docs/api/_index.html +24 -12
  226. data/docs/api/class_list.html +1 -1
  227. data/docs/api/file.README.html +1 -1
  228. data/docs/api/index.html +1 -1
  229. data/docs/api/method_list.html +478 -406
  230. data/docs/api/top-level-namespace.html +2 -2
  231. data/docs/assets/{app.C0n_5kBs.js → app.AkS4fHzI.js} +1 -1
  232. data/docs/assets/chunks/@localSearchIndexroot.C9FqcQxD.js +1 -0
  233. data/docs/assets/chunks/{VPLocalSearchBox.yICoU-Ly.js → VPLocalSearchBox.By6un1FD.js} +1 -1
  234. data/docs/assets/chunks/{theme.gMVDgzXI.js → theme.DwiUPdci.js} +2 -2
  235. data/docs/assets/{components.md.DGVPNB9a.js → components.md.BfeWD9sX.js} +3 -3
  236. data/docs/assets/{configuration.md.DK3YrtYn.js → configuration.md.DoSBNc0H.js} +1 -1
  237. data/docs/assets/{database-schema.md.CSYk6E6v.js → database-schema.md.C5gXexJi.js} +10 -3
  238. data/docs/assets/{database-schema.md.CSYk6E6v.lean.js → database-schema.md.C5gXexJi.lean.js} +1 -1
  239. data/docs/assets/{dev-environment.md.Dy6EldaM.js → dev-environment.md.DRH2D2-O.js} +3 -3
  240. data/docs/assets/dev-environment.md.DRH2D2-O.lean.js +1 -0
  241. data/docs/assets/{form-constraints.md.x5tNpTTI.js → form-constraints.md.DK5adCgM.js} +2 -2
  242. data/docs/assets/{forms.md.DwdQGwOK.js → forms.md.DFveP5g_.js} +1 -1
  243. data/docs/assets/{getting-started.md.DuiTvmpG.js → getting-started.md.DZWjCVC0.js} +3 -3
  244. data/docs/assets/{getting-started.md.DuiTvmpG.lean.js → getting-started.md.DZWjCVC0.lean.js} +1 -1
  245. data/docs/assets/{handlers.md.Chyri6KA.js → handlers.md.h84MMB1R.js} +1 -1
  246. data/docs/assets/{i18n.md.xQhiGo1G.js → i18n.md.BAm9t9JJ.js} +1 -1
  247. data/docs/assets/{layouts.md.CJGDFY-m.js → layouts.md.CVGl9xIO.js} +1 -1
  248. data/docs/assets.html +3 -3
  249. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  250. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  251. data/docs/brut-js/api/Autosubmit.html +1 -1
  252. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  253. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  254. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  255. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  256. data/docs/brut-js/api/BufferedLogger.html +1 -1
  257. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  258. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  259. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  260. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  261. data/docs/brut-js/api/ConstraintViolationMessage.html +2 -2
  262. data/docs/brut-js/api/ConstraintViolationMessage.js.html +4 -4
  263. data/docs/brut-js/api/ConstraintViolationMessages.html +3 -3
  264. data/docs/brut-js/api/ConstraintViolationMessages.js.html +3 -3
  265. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  266. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  267. data/docs/brut-js/api/Form.html +1 -1
  268. data/docs/brut-js/api/Form.js.html +1 -1
  269. data/docs/brut-js/api/I18nTranslation.html +1 -1
  270. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  271. data/docs/brut-js/api/LocaleDetection.html +1 -1
  272. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  273. data/docs/brut-js/api/Logger.html +1 -1
  274. data/docs/brut-js/api/Logger.js.html +1 -1
  275. data/docs/brut-js/api/Message.html +1 -1
  276. data/docs/brut-js/api/Message.js.html +1 -1
  277. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  278. data/docs/brut-js/api/RichString.html +1 -1
  279. data/docs/brut-js/api/RichString.js.html +1 -1
  280. data/docs/brut-js/api/Tabs.html +1 -1
  281. data/docs/brut-js/api/Tabs.js.html +1 -1
  282. data/docs/brut-js/api/Tracing.html +1 -1
  283. data/docs/brut-js/api/Tracing.js.html +1 -1
  284. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  285. data/docs/brut-js/api/external-Performance.html +1 -1
  286. data/docs/brut-js/api/external-Promise.html +1 -1
  287. data/docs/brut-js/api/external-ValidityState.html +1 -1
  288. data/docs/brut-js/api/external-Window.html +1 -1
  289. data/docs/brut-js/api/external-fetch.html +1 -1
  290. data/docs/brut-js/api/global.html +1 -1
  291. data/docs/brut-js/api/index.html +1 -1
  292. data/docs/brut-js/api/index.js.html +1 -1
  293. data/docs/brut-js/api/module-testing.html +1 -1
  294. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  295. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  296. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  297. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  298. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  299. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  300. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  301. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  302. data/docs/brut-js/api/testing_index.js.html +1 -1
  303. data/docs/brut-js.html +3 -3
  304. data/docs/business-logic.html +3 -3
  305. data/docs/cli.html +3 -3
  306. data/docs/components.html +7 -7
  307. data/docs/configuration.html +5 -5
  308. data/docs/css.html +3 -3
  309. data/docs/custom-element-tests.html +3 -3
  310. data/docs/database-access.html +3 -3
  311. data/docs/database-schema.html +12 -5
  312. data/docs/deployment.html +3 -3
  313. data/docs/dev-environment.html +5 -5
  314. data/docs/dir-structure.html +3 -3
  315. data/docs/doc-conventions.html +3 -3
  316. data/docs/end-to-end-tests.html +3 -3
  317. data/docs/features.html +3 -3
  318. data/docs/flash-and-session.html +3 -3
  319. data/docs/form-constraints.html +6 -6
  320. data/docs/forms.html +5 -5
  321. data/docs/getting-started.html +6 -6
  322. data/docs/handlers.html +5 -5
  323. data/docs/hashmap.json +1 -1
  324. data/docs/hooks.html +3 -3
  325. data/docs/i18n.html +5 -5
  326. data/docs/index.html +3 -3
  327. data/docs/instrumentation.html +3 -3
  328. data/docs/javascript.html +3 -3
  329. data/docs/jobs.html +3 -3
  330. data/docs/keyword-injection.html +3 -3
  331. data/docs/layouts.html +5 -5
  332. data/docs/lsp.html +3 -3
  333. data/docs/markdown-examples.html +3 -3
  334. data/docs/middleware.html +3 -3
  335. data/docs/overview.html +3 -3
  336. data/docs/pages.html +3 -3
  337. data/docs/recipes/alternate-layouts.html +3 -3
  338. data/docs/recipes/authentication.html +3 -3
  339. data/docs/recipes/blank-layouts.html +3 -3
  340. data/docs/recipes/custom-flash.html +3 -3
  341. data/docs/recipes/indexed-forms.html +3 -3
  342. data/docs/recipes/migrations.html +3 -3
  343. data/docs/recipes/text-field-component.html +3 -3
  344. data/docs/roadmap.html +3 -3
  345. data/docs/routes.html +3 -3
  346. data/docs/security.html +3 -3
  347. data/docs/seed-data.html +3 -3
  348. data/docs/space-time-continuum.html +3 -3
  349. data/docs/tutorial.html +3 -3
  350. data/docs/unit-tests.html +3 -3
  351. data/docs/why.html +3 -3
  352. data/lib/brut/cli/apps/scaffold.rb +77 -0
  353. data/lib/brut/cli/command.rb +1 -2
  354. data/lib/brut/framework/config.rb +7 -0
  355. data/lib/brut/front_end/components/constraint_violations.rb +2 -2
  356. data/lib/brut/front_end/components/i18n_translations.rb +6 -10
  357. data/lib/brut/front_end/form.rb +5 -2
  358. data/lib/brut/junk_drawer.rb +53 -0
  359. data/lib/brut/version.rb +1 -1
  360. metadata +28 -25
  361. data/docs/assets/chunks/@localSearchIndexroot.BF2caq1f.js +0 -1
  362. data/docs/assets/dev-environment.md.Dy6EldaM.lean.js +0 -1
  363. /data/docs/assets/{components.md.DGVPNB9a.lean.js → components.md.BfeWD9sX.lean.js} +0 -0
  364. /data/docs/assets/{configuration.md.DK3YrtYn.lean.js → configuration.md.DoSBNc0H.lean.js} +0 -0
  365. /data/docs/assets/{form-constraints.md.x5tNpTTI.lean.js → form-constraints.md.DK5adCgM.lean.js} +0 -0
  366. /data/docs/assets/{forms.md.DwdQGwOK.lean.js → forms.md.DFveP5g_.lean.js} +0 -0
  367. /data/docs/assets/{handlers.md.Chyri6KA.lean.js → handlers.md.h84MMB1R.lean.js} +0 -0
  368. /data/docs/assets/{i18n.md.xQhiGo1G.lean.js → i18n.md.BAm9t9JJ.lean.js} +0 -0
  369. /data/docs/assets/{layouts.md.CJGDFY-m.lean.js → layouts.md.CVGl9xIO.lean.js} +0 -0
@@ -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>
@@ -0,0 +1,384 @@
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::CLI::Apps::Scaffold::DbModel
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::CLI::Apps::Scaffold::DbModel";
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 (D)</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="../../../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="../Scaffold.html" title="Brut::CLI::Apps::Scaffold (class)">Scaffold</a></span></span>
41
+ &raquo;
42
+ <span class="title">DbModel</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::CLI::Apps::Scaffold::DbModel
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName"><span class='object_link'><a href="../../Command.html" title="Brut::CLI::Command (class)">Command</a></span></span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next"><span class='object_link'><a href="../../Command.html" title="Brut::CLI::Command (class)">Command</a></span></li>
78
+
79
+ <li class="next">Brut::CLI::Apps::Scaffold::DbModel</li>
80
+
81
+ </ul>
82
+ <a href="#" class="inheritanceTree">show all</a>
83
+
84
+ </dd>
85
+ </dl>
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+ <dl>
98
+ <dt>Defined in:</dt>
99
+ <dd>lib/brut/cli/apps/scaffold.rb</dd>
100
+ </dl>
101
+
102
+ </div>
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+ <h2>
113
+ Instance Method Summary
114
+ <small><a href="#" class="summary_toggle">collapse</a></small>
115
+ </h2>
116
+
117
+ <ul class="summary">
118
+
119
+ <li class="public ">
120
+ <span class="summary_signature">
121
+
122
+ <a href="#execute-instance_method" title="#execute (instance method)">#<strong>execute</strong> &#x21d2; Object </a>
123
+
124
+
125
+
126
+ </span>
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+ <span class="summary_desc"><div class='inline'>
137
+ </div></span>
138
+
139
+ </li>
140
+
141
+
142
+ </ul>
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+ <h3 class="inherited">Methods inherited from <span class='object_link'><a href="../../Command.html" title="Brut::CLI::Command (class)">Command</a></span></h3>
155
+ <p class="inherited"><span class='object_link'><a href="../../Command.html#after_bootstrap-instance_method" title="Brut::CLI::Command#after_bootstrap (method)">#after_bootstrap</a></span>, <span class='object_link'><a href="../../Command.html#args-class_method" title="Brut::CLI::Command.args (method)">args</a></span>, <span class='object_link'><a href="../../Command.html#args-instance_method" title="Brut::CLI::Command#args (method)">#args</a></span>, <span class='object_link'><a href="../../Command.html#before_execute-instance_method" title="Brut::CLI::Command#before_execute (method)">#before_execute</a></span>, <span class='object_link'><a href="../../Command.html#command_name-class_method" title="Brut::CLI::Command.command_name (method)">command_name</a></span>, <span class='object_link'><a href="../../Command.html#default_env-class_method" title="Brut::CLI::Command.default_env (method)">default_env</a></span>, <span class='object_link'><a href="../../Command.html#delegate_to_commands-instance_method" title="Brut::CLI::Command#delegate_to_commands (method)">#delegate_to_commands</a></span>, <span class='object_link'><a href="../../Command.html#description-class_method" title="Brut::CLI::Command.description (method)">description</a></span>, <span class='object_link'><a href="../../Command.html#detailed_description-class_method" title="Brut::CLI::Command.detailed_description (method)">detailed_description</a></span>, <span class='object_link'><a href="../../Command.html#env_var-class_method" title="Brut::CLI::Command.env_var (method)">env_var</a></span>, <span class='object_link'><a href="../../Command.html#err-instance_method" title="Brut::CLI::Command#err (method)">#err</a></span>, <span class='object_link'><a href="../../Command.html#global_options-instance_method" title="Brut::CLI::Command#global_options (method)">#global_options</a></span>, <span class='object_link'><a href="../../Command.html#handle_bootstrap_exception-instance_method" title="Brut::CLI::Command#handle_bootstrap_exception (method)">#handle_bootstrap_exception</a></span>, <span class='object_link'><a href="../../Command.html#initialize-instance_method" title="Brut::CLI::Command#initialize (method)">#initialize</a></span>, <span class='object_link'><a href="../../Command.html#name_matches%3F-class_method" title="Brut::CLI::Command.name_matches? (method)">name_matches?</a></span>, <span class='object_link'><a href="../../Command.html#option_parser-class_method" title="Brut::CLI::Command.option_parser (method)">option_parser</a></span>, <span class='object_link'><a href="../../Command.html#options-instance_method" title="Brut::CLI::Command#options (method)">#options</a></span>, <span class='object_link'><a href="../../Command.html#opts-class_method" title="Brut::CLI::Command.opts (method)">opts</a></span>, <span class='object_link'><a href="../../Command.html#out-instance_method" title="Brut::CLI::Command#out (method)">#out</a></span>, <span class='object_link'><a href="../../Command.html#requires_project_env-class_method" title="Brut::CLI::Command.requires_project_env (method)">requires_project_env</a></span>, <span class='object_link'><a href="../../Command.html#requires_project_env%3F-class_method" title="Brut::CLI::Command.requires_project_env? (method)">requires_project_env?</a></span>, <span class='object_link'><a href="../../Command.html#system!-instance_method" title="Brut::CLI::Command#system! (method)">#system!</a></span></p>
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="../../../Framework/Errors.html" title="Brut::Framework::Errors (module)">Framework::Errors</a></span></h3>
166
+ <p class="inherited"><span class='object_link'><a href="../../../Framework/Errors.html#abstract_method!-instance_method" title="Brut::Framework::Errors#abstract_method! (method)">#abstract_method!</a></span>, <span class='object_link'><a href="../../../Framework/Errors.html#bug!-instance_method" title="Brut::Framework::Errors#bug! (method)">#bug!</a></span></p>
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="../../../I18n/ForCLI.html" title="Brut::I18n::ForCLI (module)">I18n::ForCLI</a></span></h3>
177
+ <p class="inherited"><span class='object_link'><a href="../../../I18n/ForCLI.html#capture-instance_method" title="Brut::I18n::ForCLI#capture (method)">#capture</a></span>, <span class='object_link'><a href="../../../I18n/ForCLI.html#html_escape-instance_method" title="Brut::I18n::ForCLI#html_escape (method)">#html_escape</a></span>, <span class='object_link'><a href="../../../I18n/ForCLI.html#safe-instance_method" title="Brut::I18n::ForCLI#safe (method)">#safe</a></span></p>
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="../../../I18n/BaseMethods.html" title="Brut::I18n::BaseMethods (module)">I18n::BaseMethods</a></span></h3>
188
+ <p class="inherited"><span class='object_link'><a href="../../../I18n/BaseMethods.html#l-instance_method" title="Brut::I18n::BaseMethods#l (method)">#l</a></span>, <span class='object_link'><a href="../../../I18n/BaseMethods.html#t-instance_method" title="Brut::I18n::BaseMethods#t (method)">#t</a></span>, <span class='object_link'><a href="../../../I18n/BaseMethods.html#t_direct-instance_method" title="Brut::I18n::BaseMethods#t_direct (method)">#t_direct</a></span>, <span class='object_link'><a href="../../../I18n/BaseMethods.html#this_field_value-instance_method" title="Brut::I18n::BaseMethods#this_field_value (method)">#this_field_value</a></span></p>
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="../../ExecutionResults.html" title="Brut::CLI::ExecutionResults (module)">ExecutionResults</a></span></h3>
199
+ <p class="inherited"><span class='object_link'><a href="../../ExecutionResults.html#abort_execution-instance_method" title="Brut::CLI::ExecutionResults#abort_execution (method)">#abort_execution</a></span>, <span class='object_link'><a href="../../ExecutionResults.html#as_execution_result-instance_method" title="Brut::CLI::ExecutionResults#as_execution_result (method)">#as_execution_result</a></span>, <span class='object_link'><a href="../../ExecutionResults.html#cli_usage_error-instance_method" title="Brut::CLI::ExecutionResults#cli_usage_error (method)">#cli_usage_error</a></span>, <span class='object_link'><a href="../../ExecutionResults.html#continue_execution-instance_method" title="Brut::CLI::ExecutionResults#continue_execution (method)">#continue_execution</a></span>, <span class='object_link'><a href="../../ExecutionResults.html#show_cli_usage-instance_method" title="Brut::CLI::ExecutionResults#show_cli_usage (method)">#show_cli_usage</a></span>, <span class='object_link'><a href="../../ExecutionResults.html#stop_execution-instance_method" title="Brut::CLI::ExecutionResults#stop_execution (method)">#stop_execution</a></span></p>
200
+ <div id="constructor_details" class="method_details_list">
201
+ <h2>Constructor Details</h2>
202
+
203
+ <p class="notice">This class inherits a constructor from <span class='object_link'><a href="../../Command.html#initialize-instance_method" title="Brut::CLI::Command#initialize (method)">Brut::CLI::Command</a></span></p>
204
+
205
+ </div>
206
+
207
+
208
+ <div id="instance_method_details" class="method_details_list">
209
+ <h2>Instance Method Details</h2>
210
+
211
+
212
+ <div class="method_details first">
213
+ <h3 class="signature first" id="execute-instance_method">
214
+
215
+ #<strong>execute</strong> &#x21d2; <tt>Object</tt>
216
+
217
+
218
+
219
+
220
+
221
+ </h3><table class="source_code">
222
+ <tr>
223
+ <td>
224
+ <pre class="lines">
225
+
226
+
227
+ 622
228
+ 623
229
+ 624
230
+ 625
231
+ 626
232
+ 627
233
+ 628
234
+ 629
235
+ 630
236
+ 631
237
+ 632
238
+ 633
239
+ 634
240
+ 635
241
+ 636
242
+ 637
243
+ 638
244
+ 639
245
+ 640
246
+ 641
247
+ 642
248
+ 643
249
+ 644
250
+ 645
251
+ 646
252
+ 647
253
+ 648
254
+ 649
255
+ 650
256
+ 651
257
+ 652
258
+ 653
259
+ 654
260
+ 655
261
+ 656
262
+ 657
263
+ 658
264
+ 659
265
+ 660
266
+ 661
267
+ 662
268
+ 663
269
+ 664
270
+ 665
271
+ 666
272
+ 667
273
+ 668
274
+ 669
275
+ 670
276
+ 671
277
+ 672
278
+ 673
279
+ 674
280
+ 675
281
+ 676
282
+ 677
283
+ 678
284
+ 679
285
+ 680
286
+ 681
287
+ 682
288
+ 683
289
+ 684
290
+ 685
291
+ 686
292
+ 687
293
+ 688
294
+ 689</pre>
295
+ </td>
296
+ <td>
297
+ <pre class="code"><span class="info file"># File 'lib/brut/cli/apps/scaffold.rb', line 622</span>
298
+
299
+ <span class='kw'>def</span> <span class='id identifier rubyid_execute'>execute</span>
300
+ <span class='kw'>if</span> <span class='ivar'>@args</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>0</span>
301
+ <span class='kw'>return</span> <span class='id identifier rubyid_abort_execution'>abort_execution</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>You must provide a model name</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
302
+ <span class='kw'>end</span>
303
+ <span class='id identifier rubyid_db_module'>db_module</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../../../ModuleName.html" title="ModuleName (class)">ModuleName</a></span></span><span class='period'>.</span><span class='id identifier rubyid_from_string'><span class='object_link'><a href="../../../../ModuleName.html#from_string-class_method" title="ModuleName.from_string (method)">from_string</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>DB</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
304
+ <span class='id identifier rubyid_actions'>actions</span> <span class='op'>=</span> <span class='ivar'>@args</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_arg'>arg</span><span class='op'>|</span>
305
+ <span class='const'><span class='object_link'><a href="../../../../ModuleName.html" title="ModuleName (class)">ModuleName</a></span></span><span class='period'>.</span><span class='id identifier rubyid_from_string'><span class='object_link'><a href="../../../../ModuleName.html#from_string-class_method" title="ModuleName.from_string (method)">from_string</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_arg'>arg</span><span class='rparen'>)</span>
306
+ <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_module_name'>module_name</span><span class='op'>|</span>
307
+ <span class='id identifier rubyid_module_name'>module_name</span><span class='period'>.</span><span class='id identifier rubyid_in_module'>in_module</span><span class='lparen'>(</span><span class='id identifier rubyid_db_module'>db_module</span><span class='rparen'>)</span>
308
+ <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_model_name'>model_name</span><span class='op'>|</span>
309
+ <span class='lbrace'>{</span>
310
+ <span class='label'>class_name:</span> <span class='id identifier rubyid_model_name'>model_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='comma'>,</span>
311
+ <span class='label'>path:</span> <span class='id identifier rubyid_model_name'>model_name</span><span class='period'>.</span><span class='id identifier rubyid_path_from'>path_from</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_data_models_src_dir'>data_models_src_dir</span><span class='rparen'>)</span><span class='comma'>,</span>
312
+ <span class='label'>prefix:</span> <span class='id identifier rubyid_model_name'>model_name</span><span class='period'>.</span><span class='id identifier rubyid_parts_of_module'>parts_of_module</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lbracket'>[</span><span class='int'>0</span><span class='comma'>,</span><span class='int'>2</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span><span class='comma'>,</span>
313
+ <span class='label'>spec_path:</span> <span class='id identifier rubyid_model_name'>model_name</span><span class='period'>.</span><span class='id identifier rubyid_path_from'>path_from</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_data_models_specs_dir'>data_models_specs_dir</span><span class='comma'>,</span> <span class='label'>extname:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.spec.rb</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span>
314
+ <span class='label'>factory_path:</span> <span class='id identifier rubyid_model_name'>model_name</span><span class='period'>.</span><span class='id identifier rubyid_path_from'>path_from</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_app_specs_dir'>app_specs_dir</span> <span class='op'>/</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>factories</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>extname:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.factory.rb</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span>
315
+ <span class='label'>factory_name:</span> <span class='id identifier rubyid_model_name'>model_name</span><span class='period'>.</span><span class='id identifier rubyid_parts_of_module'>parts_of_module</span><span class='lbracket'>[</span><span class='int'>1</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:underscorized</span><span class='rparen'>)</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><span class='comma'>,</span>
316
+ <span class='rbrace'>}</span>
317
+ <span class='kw'>end</span>
318
+ <span class='id identifier rubyid_migration_name'>migration_name</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>create_</span><span class='tstring_end'>&quot;</span></span> <span class='op'>+</span> <span class='ivar'>@args</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><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>[^\w]</span><span class='regexp_end'>/</span></span><span class='comma'>,</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><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>__</span><span class='regexp_end'>/</span></span><span class='comma'>,</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>
319
+ <span class='kw'>if</span> <span class='id identifier rubyid_global_options'>global_options</span><span class='period'>.</span><span class='id identifier rubyid_dry_run?'>dry_run?</span>
320
+ <span class='ivar'>@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'>Would create the following DB models:</span><span class='tstring_end'>&quot;</span></span>
321
+ <span class='id identifier rubyid_actions'>actions</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_action'>action</span><span class='op'>|</span>
322
+ <span class='ivar'>@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='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:class_name</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
323
+ <span class='ivar'>@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'> prefix: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:prefix</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
324
+ <span class='ivar'>@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'> in: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:path</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
325
+ <span class='ivar'>@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'> spec: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:spec_path</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
326
+ <span class='ivar'>@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'> factory: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:factory_path</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
327
+ <span class='ivar'>@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'> name: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:factory_name</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
328
+
329
+ <span class='kw'>end</span>
330
+ <span class='ivar'>@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'>Would create a migration file</span><span class='tstring_end'>&quot;</span></span>
331
+ <span class='ivar'>@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'> via: bin/db new_migration </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_migration_name'>migration_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
332
+ <span class='kw'>else</span>
333
+ <span class='id identifier rubyid_system!'>system!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>bin/db new_migration </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_migration_name'>migration_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
334
+ <span class='id identifier rubyid_actions'>actions</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_action'>action</span><span class='op'>|</span>
335
+ <span class='const'>FileUtils</span><span class='period'>.</span><span class='id identifier rubyid_mkdir_p'>mkdir_p</span> <span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:path</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span>
336
+ <span class='ivar'>@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'>Creating </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:class_name</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'> in </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:path</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_relative_path_from'>relative_path_from</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_project_root'>project_root</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
337
+ <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_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:path</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</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>
338
+ <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'>%{</span><span class='tstring_content'>class </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:class_name</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'> &lt; AppDataModel
339
+ has_external_id :</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:prefix</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'> # !IMPORTANT: Make sure this is unique amongst your DB models
340
+ end</span><span class='tstring_end'>}</span></span>
341
+ <span class='kw'>end</span>
342
+ <span class='const'>FileUtils</span><span class='period'>.</span><span class='id identifier rubyid_mkdir_p'>mkdir_p</span> <span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:spec_path</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span>
343
+ <span class='ivar'>@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'>Creating spec for </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:class_name</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'> in </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:spec_path</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_relative_path_from'>relative_path_from</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_project_root'>project_root</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
344
+ <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_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:spec_path</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</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>
345
+ <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'>%{</span><span class='tstring_content'>require &quot;spec_helper&quot;
346
+ RSpec.describe </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:class_name</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'> do
347
+ # Remove this if you decide to put logic on
348
+ # your model
349
+ implementation_is_trival
350
+ end</span><span class='tstring_end'>}</span></span>
351
+ <span class='kw'>end</span>
352
+ <span class='const'>FileUtils</span><span class='period'>.</span><span class='id identifier rubyid_mkdir_p'>mkdir_p</span> <span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:factory_path</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span>
353
+ <span class='ivar'>@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'>Creating factory for </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:class_name</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'> in </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:factory_path</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_relative_path_from'>relative_path_from</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_project_root'>project_root</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
354
+ <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_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:factory_path</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</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>
355
+ <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'>%{</span><span class='tstring_content'>FactoryBot.define do
356
+ factory :</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:factory_name</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>, class: &quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_action'>action</span><span class='lbracket'>[</span><span class='symbol'>:class_name</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>&quot; do
357
+ # Add attributes here
358
+ end
359
+ end
360
+
361
+ </span><span class='tstring_end'>}</span></span>
362
+ <span class='kw'>end</span>
363
+ <span class='kw'>end</span>
364
+ <span class='kw'>end</span>
365
+ <span class='int'>0</span>
366
+ <span class='kw'>end</span></pre>
367
+ </td>
368
+ </tr>
369
+ </table>
370
+ </div>
371
+
372
+ </div>
373
+
374
+ </div>
375
+
376
+ <div id="footer">
377
+ Generated on Sat Jul 12 21:25:21 2025 by
378
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
379
+ 0.9.37 (ruby-3.4.4).
380
+ </div>
381
+
382
+ </div>
383
+ </body>
384
+ </html>
@@ -400,7 +400,7 @@ end</span><span class='tstring_end'>}</span></span>
400
400
  </div>
401
401
 
402
402
  <div id="footer">
403
- Generated on Thu Jul 10 13:41:04 2025 by
403
+ Generated on Sat Jul 12 21:25:21 2025 by
404
404
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
405
405
  0.9.37 (ruby-3.4.4).
406
406
  </div>