brut 0.15.0 → 0.16.0.pre
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/CHANGELOG.md +5 -0
- data/Dockerfile.dx +3 -6
- data/Gemfile.lock +1 -1
- data/brut-css/package-lock.json +2 -2
- data/brut-css/package.json +1 -1
- data/brut-js/package-lock.json +2 -2
- data/brut-js/package.json +1 -1
- data/brutrb.com/.vitepress/config.mjs +4 -3
- data/brutrb.com/deployment.md +23 -9
- data/brutrb.com/jobs.md +107 -7
- data/brutrb.com/recipes/dev-env-secrets.md +87 -0
- data/brutrb.com/roadmap.md +2 -7
- data/docs/404.html +2 -2
- data/docs/adrs.html +3 -3
- data/docs/ai.html +3 -3
- data/docs/api/Brut/BackEnd/SeedData.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
- data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
- data/docs/api/Brut/BackEnd/Validators.html +1 -1
- data/docs/api/Brut/BackEnd.html +1 -1
- data/docs/api/Brut/CLI/App.html +1 -1
- data/docs/api/Brut/CLI/AppRunner.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Status.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB.html +1 -1
- data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
- data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
- data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
- data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test.html +1 -1
- data/docs/api/Brut/CLI/Apps.html +1 -1
- data/docs/api/Brut/CLI/Command.html +1 -1
- data/docs/api/Brut/CLI/Error.html +1 -1
- data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
- data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
- data/docs/api/Brut/CLI/Executor.html +1 -1
- data/docs/api/Brut/CLI/InvalidOption.html +1 -1
- data/docs/api/Brut/CLI/Options.html +1 -1
- data/docs/api/Brut/CLI/Output.html +1 -1
- data/docs/api/Brut/CLI/SystemExecError.html +1 -1
- data/docs/api/Brut/CLI.html +1 -1
- data/docs/api/Brut/FactoryBot.html +1 -1
- data/docs/api/Brut/Framework/App.html +1 -1
- data/docs/api/Brut/Framework/Config.html +1 -1
- data/docs/api/Brut/Framework/Container.html +1 -1
- data/docs/api/Brut/Framework/Error.html +1 -1
- data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
- data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
- data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
- data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
- data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
- data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
- data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
- data/docs/api/Brut/Framework/Errors.html +1 -1
- data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
- data/docs/api/Brut/Framework/MCP.html +1 -1
- data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
- data/docs/api/Brut/Framework.html +1 -1
- data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
- data/docs/api/Brut/FrontEnd/Component/Helpers.html +1 -1
- data/docs/api/Brut/FrontEnd/Component.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/ButtonTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
- data/docs/api/Brut/FrontEnd/Components.html +1 -1
- data/docs/api/Brut/FrontEnd/CsrfProtector.html +1 -1
- data/docs/api/Brut/FrontEnd/Download.html +1 -1
- data/docs/api/Brut/FrontEnd/Flash.html +1 -1
- data/docs/api/Brut/FrontEnd/Form.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/Button.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/ButtonInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms.html +1 -1
- data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
- data/docs/api/Brut/FrontEnd/Handler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
- data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
- data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
- data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
- data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
- data/docs/api/Brut/FrontEnd/Layout.html +1 -1
- data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
- data/docs/api/Brut/FrontEnd/Page.html +1 -1
- data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
- data/docs/api/Brut/FrontEnd/Pages.html +1 -1
- data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing.html +1 -1
- data/docs/api/Brut/FrontEnd/Session.html +1 -1
- data/docs/api/Brut/FrontEnd.html +1 -1
- data/docs/api/Brut/I18n/BaseMethods.html +1 -1
- data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
- data/docs/api/Brut/I18n/ForCLI.html +1 -1
- data/docs/api/Brut/I18n/ForHTML.html +1 -1
- data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
- data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
- data/docs/api/Brut/I18n.html +1 -1
- data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
- data/docs/api/Brut/Instrumentation/Methods/ClassMethods.html +1 -1
- data/docs/api/Brut/Instrumentation/Methods.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
- data/docs/api/Brut/Instrumentation.html +1 -1
- data/docs/api/Brut/RubocopConfig.html +1 -1
- data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
- data/docs/api/Brut/SinatraHelpers.html +1 -1
- data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
- data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
- data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
- data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
- data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
- data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
- data/docs/api/Brut/SpecSupport.html +1 -1
- data/docs/api/Brut.html +1 -1
- data/docs/api/Clock.html +1 -1
- data/docs/api/ModuleName.html +1 -1
- data/docs/api/RichString.html +1 -1
- data/docs/api/SemanticLogger/Appender/Async.html +1 -1
- data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
- data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
- data/docs/api/Sequel/Extensions.html +1 -1
- data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
- data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
- data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
- data/docs/api/Sequel/Plugins/FindBang.html +1 -1
- data/docs/api/Sequel/Plugins.html +1 -1
- data/docs/api/Sequel.html +1 -1
- data/docs/api/_index.html +1 -1
- data/docs/api/file.README.html +1 -1
- data/docs/api/index.html +1 -1
- data/docs/api/top-level-namespace.html +1 -1
- data/docs/assets/{app.B0X8upRm.js → app.Dm7v_ouO.js} +1 -1
- data/docs/assets/{brut-js.md.CbJAe2Ky.js → brut-js.md.BMz0X1Rz.js} +1 -1
- data/docs/assets/chunks/@localSearchIndexroot.BiNFswvo.js +1 -0
- data/docs/assets/chunks/{VPLocalSearchBox.jLmhant1.js → VPLocalSearchBox.DQK6jQou.js} +1 -1
- data/docs/assets/chunks/{theme.CtVUdCdt.js → theme.BuExsdM9.js} +2 -2
- data/docs/assets/{components.md.C6nWgDP0.js → components.md.Dfd3w6UW.js} +3 -3
- data/docs/assets/{configuration.md.CpbYHWPb.js → configuration.md.DTYoV2Ea.js} +1 -1
- data/docs/assets/{forms.md.Bii91k3E.js → forms.md.DEkmJUvb.js} +1 -1
- data/docs/assets/{getting-started.md.ChAvueK7.js → getting-started.md.DO-4eoGW.js} +2 -2
- data/docs/assets/{tutorials_02-dialog.md.De6iTsWX.js → tutorials_02-dialog.md.D2vSjDVf.js} +1 -1
- data/docs/assets.html +3 -3
- data/docs/brut-js/api/AjaxSubmit.html +2 -2
- data/docs/brut-js/api/AjaxSubmit.js.html +2 -2
- data/docs/brut-js/api/Autosubmit.html +2 -2
- data/docs/brut-js/api/Autosubmit.js.html +2 -2
- data/docs/brut-js/api/BaseCustomElement.html +2 -2
- data/docs/brut-js/api/BaseCustomElement.js.html +2 -2
- data/docs/brut-js/api/BrutCustomElements.html +3 -3
- data/docs/brut-js/api/BufferedLogger.html +2 -2
- data/docs/brut-js/api/ConfirmSubmit.html +2 -2
- data/docs/brut-js/api/ConfirmSubmit.js.html +2 -2
- data/docs/brut-js/api/ConfirmationDialog.html +2 -2
- data/docs/brut-js/api/ConfirmationDialog.js.html +2 -2
- data/docs/brut-js/api/ConstraintViolationMessage.html +2 -2
- data/docs/brut-js/api/ConstraintViolationMessage.js.html +2 -2
- data/docs/brut-js/api/ConstraintViolationMessages.html +2 -2
- data/docs/brut-js/api/ConstraintViolationMessages.js.html +2 -2
- data/docs/brut-js/api/CopyToClipboard.html +2 -2
- data/docs/brut-js/api/CopyToClipboard.js.html +2 -2
- data/docs/brut-js/api/Form.html +2 -2
- data/docs/brut-js/api/Form.js.html +2 -2
- data/docs/brut-js/api/I18nTranslation.html +2 -2
- data/docs/brut-js/api/I18nTranslation.js.html +5 -2
- data/docs/brut-js/api/LocaleDetection.html +2 -2
- data/docs/brut-js/api/LocaleDetection.js.html +2 -2
- data/docs/brut-js/api/Logger.html +2 -2
- data/docs/brut-js/api/Logger.js.html +2 -2
- data/docs/brut-js/api/Message.html +2 -2
- data/docs/brut-js/api/Message.js.html +11 -5
- data/docs/brut-js/api/PrefixedLogger.html +2 -2
- data/docs/brut-js/api/RichString.html +9 -9
- data/docs/brut-js/api/RichString.js.html +6 -3
- data/docs/brut-js/api/Tabs.html +2 -2
- data/docs/brut-js/api/Tabs.js.html +2 -2
- data/docs/brut-js/api/Toast.html +270 -0
- data/docs/brut-js/api/Toast.js.html +153 -0
- data/docs/brut-js/api/Tracing.html +2 -2
- data/docs/brut-js/api/Tracing.js.html +2 -2
- data/docs/brut-js/api/external-CustomElementRegistry.html +3 -3
- data/docs/brut-js/api/external-Performance.html +3 -3
- data/docs/brut-js/api/external-Promise.html +3 -3
- data/docs/brut-js/api/external-ValidityState.html +3 -3
- data/docs/brut-js/api/external-Window.html +4 -4
- data/docs/brut-js/api/external-fetch.html +3 -3
- data/docs/brut-js/api/global.html +3 -3
- data/docs/brut-js/api/index.html +2 -2
- data/docs/brut-js/api/index.js.html +5 -2
- data/docs/brut-js/api/module-testing.html +2 -2
- data/docs/brut-js/api/testing.AssetMetadata.html +2 -2
- data/docs/brut-js/api/testing.AssetMetadataLoader.html +2 -2
- data/docs/brut-js/api/testing.CustomElementTest.html +2 -2
- data/docs/brut-js/api/testing.DOMCreator.html +2 -2
- data/docs/brut-js/api/testing_AssetMetadata.js.html +2 -2
- data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +2 -2
- data/docs/brut-js/api/testing_CustomElementTest.js.html +2 -2
- data/docs/brut-js/api/testing_DOMCreator.js.html +2 -2
- data/docs/brut-js/api/testing_index.js.html +2 -2
- data/docs/brut-js.html +5 -5
- data/docs/business-logic.html +3 -3
- data/docs/cli.html +3 -3
- data/docs/components.html +7 -7
- data/docs/configuration.html +5 -5
- data/docs/css.html +3 -3
- data/docs/custom-element-tests.html +3 -3
- data/docs/database-access.html +3 -3
- data/docs/database-schema.html +3 -3
- data/docs/deployment.html +3 -3
- data/docs/dev-environment.html +3 -3
- data/docs/dir-structure.html +3 -3
- data/docs/doc-conventions.html +3 -3
- data/docs/end-to-end-tests.html +3 -3
- data/docs/features.html +3 -3
- data/docs/flash-and-session.html +3 -3
- data/docs/form-constraints.html +3 -3
- data/docs/forms.html +5 -5
- data/docs/getting-started.html +6 -6
- data/docs/handlers.html +3 -3
- data/docs/hashmap.json +1 -1
- data/docs/hooks.html +3 -3
- data/docs/i18n.html +3 -3
- data/docs/index.html +3 -3
- data/docs/instrumentation.html +3 -3
- data/docs/javascript.html +3 -3
- data/docs/jobs.html +3 -3
- data/docs/keyword-injection.html +3 -3
- data/docs/layouts.html +3 -3
- data/docs/lsp.html +3 -3
- data/docs/markdown-examples.html +3 -3
- data/docs/middleware.html +3 -3
- data/docs/overview.html +3 -3
- data/docs/pages.html +3 -3
- data/docs/recipes/alternate-layouts.html +3 -3
- data/docs/recipes/authentication.html +3 -3
- data/docs/recipes/custom-flash.html +3 -3
- data/docs/recipes/form-errors.html +3 -3
- data/docs/recipes/indexed-forms.html +3 -3
- data/docs/recipes/migrations.html +3 -3
- data/docs/recipes/text-field-component.html +3 -3
- data/docs/roadmap.html +3 -3
- data/docs/routes.html +3 -3
- data/docs/security.html +3 -3
- data/docs/seed-data.html +3 -3
- data/docs/space-time-continuum.html +3 -3
- data/docs/tutorial.html +3 -3
- data/docs/tutorials/01-intro.html +3 -3
- data/docs/tutorials/02-dialog.html +5 -5
- data/docs/unit-tests.html +3 -3
- data/docs/why.html +3 -3
- data/dx/bash_customizations +3 -4
- data/dx/build.pre +15 -0
- data/lib/brut/cli/apps/heroku_container_based_deploy.rb +41 -15
- data/lib/brut/cli/apps/test.rb +2 -0
- data/lib/brut/framework/container.rb +6 -4
- data/lib/brut/framework/mcp.rb +1 -1
- data/lib/brut/version.rb +1 -1
- data/mkbrut/Gemfile.lock +2 -2
- data/mkbrut/lib/mkbrut/add_segment.rb +38 -0
- data/mkbrut/lib/mkbrut/add_segment_options.rb +22 -0
- data/mkbrut/lib/mkbrut/app.rb +7 -2
- data/mkbrut/lib/mkbrut/base.rb +1 -0
- data/mkbrut/lib/mkbrut/cli.rb +90 -8
- data/mkbrut/lib/mkbrut/ops/insert_code_in_method.rb +19 -7
- data/mkbrut/lib/mkbrut/ops/insert_into_file.rb +36 -0
- data/mkbrut/lib/mkbrut/ops/prism_parsing_op.rb +14 -2
- data/mkbrut/lib/mkbrut/ops.rb +1 -0
- data/mkbrut/lib/mkbrut/segments/bare_bones.rb +8 -0
- data/mkbrut/lib/mkbrut/segments/demo.rb +8 -0
- data/mkbrut/lib/mkbrut/segments/heroku.rb +23 -3
- data/mkbrut/lib/mkbrut/segments/sidekiq.rb +136 -1
- data/mkbrut/lib/mkbrut/segments.rb +1 -1
- data/mkbrut/lib/mkbrut/version.rb +1 -1
- data/mkbrut/lib/mkbrut.rb +2 -0
- data/mkbrut/templates/Base/.gitignore +3 -0
- data/mkbrut/templates/Base/Dockerfile.dx +18 -21
- data/mkbrut/templates/Base/Gemfile.erb +1 -1
- data/mkbrut/templates/Base/bin/run +107 -67
- data/mkbrut/templates/Base/bin/run.run +4 -0
- data/mkbrut/templates/Base/bin/setup +32 -1
- data/mkbrut/templates/Base/dx/bash_customizations +0 -4
- data/mkbrut/templates/Base/package.json.erb +1 -1
- data/mkbrut/templates/segments/Heroku/deploy/Dockerfile +15 -15
- data/mkbrut/templates/segments/Heroku/deploy/heroku_config.rb +5 -4
- data/mkbrut/templates/segments/Sidekiq/app/boot_sidekiq.rb +2 -0
- data/mkbrut/templates/segments/Sidekiq/app/config/sidekiq.yml +4 -0
- data/mkbrut/templates/segments/Sidekiq/app/src/back_end/jobs/app_job.rb +3 -0
- data/mkbrut/templates/segments/Sidekiq/app/src/back_end/jobs/example_job.rb +12 -0
- data/mkbrut/templates/segments/Sidekiq/app/src/back_end/segments/sidekiq_segment.rb +56 -0
- data/mkbrut/templates/segments/Sidekiq/bin/run.sidekiq +4 -0
- data/mkbrut/templates/segments/Sidekiq/specs/back_end/jobs/example_job.spec.rb +5 -0
- data/mkbrut/templates/segments/Sidekiq/specs/integration/sidekiq_works.spec.rb +38 -0
- metadata +34 -18
- data/docs/assets/chunks/@localSearchIndexroot.C0s1k0UQ.js +0 -1
- /data/docs/assets/{brut-js.md.CbJAe2Ky.lean.js → brut-js.md.BMz0X1Rz.lean.js} +0 -0
- /data/docs/assets/{components.md.C6nWgDP0.lean.js → components.md.Dfd3w6UW.lean.js} +0 -0
- /data/docs/assets/{configuration.md.CpbYHWPb.lean.js → configuration.md.DTYoV2Ea.lean.js} +0 -0
- /data/docs/assets/{forms.md.Bii91k3E.lean.js → forms.md.DEkmJUvb.lean.js} +0 -0
- /data/docs/assets/{getting-started.md.ChAvueK7.lean.js → getting-started.md.DO-4eoGW.lean.js} +0 -0
- /data/docs/assets/{tutorials_02-dialog.md.De6iTsWX.lean.js → tutorials_02-dialog.md.D2vSjDVf.lean.js} +0 -0
@@ -37,7 +37,8 @@ WORKDIR /brut-app
|
|
37
37
|
# - lsb-release is used to generically access information for this OS's version
|
38
38
|
# - wget allows us to copy/paste commands from vendors about how to install
|
39
39
|
# software even though it does the same thing as curl
|
40
|
-
RUN apt
|
40
|
+
RUN --mount=type=cache,target=/var/cache/apt \
|
41
|
+
apt-get update --quiet --yes && \
|
41
42
|
apt-get install --no-install-recommends --quiet --yes \
|
42
43
|
ca-certificates \
|
43
44
|
curl \
|
@@ -62,8 +63,7 @@ RUN /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -y && \
|
|
62
63
|
ENV RACK_ENV="production" \
|
63
64
|
BUNDLE_DEPLOYMENT="1" \
|
64
65
|
BUNDLE_PATH="/usr/local/bundle" \
|
65
|
-
BUNDLE_WITHOUT="development"
|
66
|
-
APP_GIT_SHA1="${app_git_sha1}"
|
66
|
+
BUNDLE_WITHOUT="development"
|
67
67
|
|
68
68
|
# This makes a new image that we'll throw away after building
|
69
69
|
# needed artifacts.
|
@@ -74,30 +74,29 @@ FROM base AS build
|
|
74
74
|
# - libpq-dev is needed by postgres
|
75
75
|
# - pkg-config is, I guess, not considered "essential" (as in build-essential),
|
76
76
|
# but still needed to install downstream stuff
|
77
|
-
RUN apt
|
77
|
+
RUN --mount=type=cache,target=/var/cache/apt \
|
78
|
+
apt-get update --quiet --yes && \
|
78
79
|
apt-get install --no-install-recommends --quiet --yes \
|
79
80
|
build-essential \
|
80
81
|
git \
|
81
82
|
libpq-dev \
|
82
83
|
pkg-config
|
83
84
|
|
84
|
-
# Install NodeJS
|
85
|
-
|
86
|
-
\. "$HOME/.nvm/nvm.sh" && \
|
87
|
-
nvm install 22 && \
|
88
|
-
node -v && nvm current && npm -v
|
85
|
+
# Install NodeJS from their Docker image
|
86
|
+
COPY --from=node:22-slim /usr/local /usr/local
|
89
87
|
|
90
|
-
|
91
|
-
COPY . .
|
88
|
+
COPY Gemfile Gemfile.lock .
|
92
89
|
|
93
90
|
# Install RubyGems from app's Gemfile
|
94
|
-
RUN
|
91
|
+
RUN --mount=type=cache,target=${BUNDLE_PATH}/cache \
|
92
|
+
bundle install --verbose && \
|
95
93
|
rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git
|
96
94
|
|
95
|
+
COPY package.json package-lock.json ./
|
97
96
|
# Install Node Modules from package.json
|
98
|
-
RUN
|
99
|
-
|
100
|
-
|
97
|
+
RUN npm clean-install --no-audit --no-fund --verbose
|
98
|
+
|
99
|
+
COPY . .
|
101
100
|
|
102
101
|
# Build all assets
|
103
102
|
RUN \. "$HOME/.nvm/nvm.sh" && \
|
@@ -118,6 +117,7 @@ RUN groupadd --system --gid 1000 brut && \
|
|
118
117
|
chown -R brut:brut logs tmp
|
119
118
|
USER 1000:1000
|
120
119
|
|
120
|
+
ENV APP_GIT_SHA1="${app_git_sha1}"
|
121
121
|
# This is used to execute other commands. When the app is run in production,
|
122
122
|
# this script is used to run it.
|
123
123
|
ENTRYPOINT ["/brut-app/deploy/docker-entrypoint"]
|
@@ -8,8 +8,8 @@ class HerokuConfig
|
|
8
8
|
# The format of this Hash is:
|
9
9
|
#
|
10
10
|
# {
|
11
|
-
#
|
12
|
-
# cmd:
|
11
|
+
# *image name* => {
|
12
|
+
# cmd: *command line for Dockerfile RUN directive*,
|
13
13
|
# }
|
14
14
|
# }
|
15
15
|
#
|
@@ -21,6 +21,7 @@ class HerokuConfig
|
|
21
21
|
# cmd: "bin/run-sidekiq",
|
22
22
|
# }
|
23
23
|
# }
|
24
|
-
|
24
|
+
#
|
25
|
+
def self.additional_images
|
26
|
+
end
|
25
27
|
end
|
26
|
-
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# This is entirely to allow the integration test to run
|
2
|
+
# that verifies you have Sidekqi working and the segment was
|
3
|
+
# installed correctly. Once you have created a real job for
|
4
|
+
# your app and done whatever testing you need, please delete
|
5
|
+
# this job and the integration test.
|
6
|
+
class ExampleJob < AppJob
|
7
|
+
def perform(path_to_file, contents)
|
8
|
+
File.open(path_to_file, "w") do |f|
|
9
|
+
f.puts(contents)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require "sidekiq"
|
2
|
+
# Encapsulates all Sidekiq configuraiton beyond what can be done in
|
3
|
+
# app/config/sidekiq.yml. You can edit this as needed.
|
4
|
+
class SidekiqSegment
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
Brut.container.store(
|
8
|
+
"flush_spans_in_sidekiq?",
|
9
|
+
"Boolean",
|
10
|
+
"True if sidekiq jobs should flush all OTel spans after the job completes"
|
11
|
+
) do |project_env|
|
12
|
+
if ENV["FLUSH_SPANS_IN_SIDEKIQ"] == "true"
|
13
|
+
true
|
14
|
+
elsif ENV["FLUSH_SPANS_IN_SIDEKIQ"] == "false"
|
15
|
+
false
|
16
|
+
else
|
17
|
+
project_env.development?
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def boot!
|
23
|
+
Sidekiq.configure_server do |config|
|
24
|
+
config.redis = {
|
25
|
+
# Per https://devcenter.heroku.com/articles/connecting-heroku-redis#connecting-in-ruby
|
26
|
+
ssl_params: {
|
27
|
+
verify_mode: OpenSSL::SSL::VERIFY_NONE,
|
28
|
+
},
|
29
|
+
}
|
30
|
+
config.logger = SemanticLogger["Sidekiq:server"]
|
31
|
+
if Brut.container.flush_spans_in_sidekiq?
|
32
|
+
SemanticLogger[self.class].info("Sidekiq jobs will flush spans")
|
33
|
+
config.server_middleware do |chain|
|
34
|
+
if defined? OpenTelemetry::Instrumentation::Sidekiq::Middlewares::Server::TracerMiddleware
|
35
|
+
chain.insert_before OpenTelemetry::Instrumentation::Sidekiq::Middlewares::Server::TracerMiddleware,
|
36
|
+
Brut::BackEnd::Sidekiq::Middlewares::Server::FlushSpans
|
37
|
+
else
|
38
|
+
SemanticLogger["Sidekiq:server"].warn("OpenTelemetry::Instrumentation::Sidekiq::Middlewares::Server::TracerMiddleware not defined")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
else
|
42
|
+
SemanticLogger[self.class].info("Sidekiq jobs will not flush spans")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
Sidekiq.configure_client do |config|
|
47
|
+
config.redis = {
|
48
|
+
# Per https://devcenter.heroku.com/articles/connecting-heroku-redis#connecting-in-ruby
|
49
|
+
ssl_params: {
|
50
|
+
verify_mode: OpenSSL::SSL::VERIFY_NONE,
|
51
|
+
},
|
52
|
+
}
|
53
|
+
config.logger = SemanticLogger["Sidekiq:client"]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "timeout"
|
3
|
+
|
4
|
+
# This test will ensure that Sidekiq segment was installed
|
5
|
+
# correctly and your app can use Sidekiq. Once you have
|
6
|
+
# created a real job for your app, delete ExampleJob and this test.
|
7
|
+
RSpec.describe "Sidekiq is working", e2e: true do
|
8
|
+
it "processes jobs using the real Sidekiq server" do
|
9
|
+
# ExampleJob will write contents to a file. This
|
10
|
+
# test will delete that fail, queue the job, then
|
11
|
+
# wait up to 5 seconds for the job to run and create
|
12
|
+
# the file with the contents. This should be more than
|
13
|
+
# enough time.
|
14
|
+
file = Brut.container.tmp_dir / "sidekiq_test.txt"
|
15
|
+
if file.exist?
|
16
|
+
file.delete
|
17
|
+
end
|
18
|
+
|
19
|
+
# If the file still exists at this point, the test
|
20
|
+
# will pass even if Sidekiq is not working.
|
21
|
+
confidence_check { expect(file.exist?).to eq(false) }
|
22
|
+
|
23
|
+
ExampleJob.perform_async(file.to_s, "test content for file")
|
24
|
+
queue_name = ExampleJob.sidekiq_options["queue"]
|
25
|
+
expect {
|
26
|
+
Timeout.timeout(5) do
|
27
|
+
loop do
|
28
|
+
if file.exist?
|
29
|
+
break
|
30
|
+
end
|
31
|
+
sleep 0.1
|
32
|
+
end
|
33
|
+
end
|
34
|
+
}.not_to raise_error
|
35
|
+
content = File.read(file)
|
36
|
+
expect(content).to eq("test content for file\n")
|
37
|
+
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brut
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Bryant Copeland
|
@@ -706,6 +706,7 @@ files:
|
|
706
706
|
- brutrb.com/recipes/alternate-layouts.md
|
707
707
|
- brutrb.com/recipes/authentication.md
|
708
708
|
- brutrb.com/recipes/custom-flash.md
|
709
|
+
- brutrb.com/recipes/dev-env-secrets.md
|
709
710
|
- brutrb.com/recipes/form-errors.md
|
710
711
|
- brutrb.com/recipes/indexed-forms.md
|
711
712
|
- brutrb.com/recipes/migrations.md
|
@@ -965,25 +966,25 @@ files:
|
|
965
966
|
- docs/assets/adrs.md.YglbWtQe.lean.js
|
966
967
|
- docs/assets/ai.md.ChLnvDAX.js
|
967
968
|
- docs/assets/ai.md.ChLnvDAX.lean.js
|
968
|
-
- docs/assets/app.
|
969
|
+
- docs/assets/app.Dm7v_ouO.js
|
969
970
|
- docs/assets/assets.md.BEF6Oz6K.js
|
970
971
|
- docs/assets/assets.md.BEF6Oz6K.lean.js
|
971
972
|
- docs/assets/basic-form-with-violations.Cv6Y9-Q_.png
|
972
973
|
- docs/assets/basic-form.DbHnu0oW.png
|
973
|
-
- docs/assets/brut-js.md.
|
974
|
-
- docs/assets/brut-js.md.
|
974
|
+
- docs/assets/brut-js.md.BMz0X1Rz.js
|
975
|
+
- docs/assets/brut-js.md.BMz0X1Rz.lean.js
|
975
976
|
- docs/assets/business-logic.md.DbuaOYGU.js
|
976
977
|
- docs/assets/business-logic.md.DbuaOYGU.lean.js
|
977
|
-
- docs/assets/chunks/@localSearchIndexroot.
|
978
|
-
- docs/assets/chunks/VPLocalSearchBox.
|
978
|
+
- docs/assets/chunks/@localSearchIndexroot.BiNFswvo.js
|
979
|
+
- docs/assets/chunks/VPLocalSearchBox.DQK6jQou.js
|
979
980
|
- docs/assets/chunks/framework.C4nOkCZI.js
|
980
|
-
- docs/assets/chunks/theme.
|
981
|
+
- docs/assets/chunks/theme.BuExsdM9.js
|
981
982
|
- docs/assets/cli.md.DDMar_51.js
|
982
983
|
- docs/assets/cli.md.DDMar_51.lean.js
|
983
|
-
- docs/assets/components.md.
|
984
|
-
- docs/assets/components.md.
|
985
|
-
- docs/assets/configuration.md.
|
986
|
-
- docs/assets/configuration.md.
|
984
|
+
- docs/assets/components.md.Dfd3w6UW.js
|
985
|
+
- docs/assets/components.md.Dfd3w6UW.lean.js
|
986
|
+
- docs/assets/configuration.md.DTYoV2Ea.js
|
987
|
+
- docs/assets/configuration.md.DTYoV2Ea.lean.js
|
987
988
|
- docs/assets/css.md.K5rOCOQY.js
|
988
989
|
- docs/assets/css.md.K5rOCOQY.lean.js
|
989
990
|
- docs/assets/custom-element-tests.md.DiLe-eFw.js
|
@@ -1009,10 +1010,10 @@ files:
|
|
1009
1010
|
- docs/assets/flash-and-session.md.CUsMxoNl.lean.js
|
1010
1011
|
- docs/assets/form-constraints.md.KlfXSKm2.js
|
1011
1012
|
- docs/assets/form-constraints.md.KlfXSKm2.lean.js
|
1012
|
-
- docs/assets/forms.md.
|
1013
|
-
- docs/assets/forms.md.
|
1014
|
-
- docs/assets/getting-started.md.
|
1015
|
-
- docs/assets/getting-started.md.
|
1013
|
+
- docs/assets/forms.md.DEkmJUvb.js
|
1014
|
+
- docs/assets/forms.md.DEkmJUvb.lean.js
|
1015
|
+
- docs/assets/getting-started.md.DO-4eoGW.js
|
1016
|
+
- docs/assets/getting-started.md.DO-4eoGW.lean.js
|
1016
1017
|
- docs/assets/handlers.md.C5tUwmmo.js
|
1017
1018
|
- docs/assets/handlers.md.C5tUwmmo.lean.js
|
1018
1019
|
- docs/assets/hooks.md.CoiYCKRc.js
|
@@ -1078,8 +1079,8 @@ files:
|
|
1078
1079
|
- docs/assets/tutorial.md.BX6f6l00.lean.js
|
1079
1080
|
- docs/assets/tutorials_01-intro.md.CzZ3kpF_.js
|
1080
1081
|
- docs/assets/tutorials_01-intro.md.CzZ3kpF_.lean.js
|
1081
|
-
- docs/assets/tutorials_02-dialog.md.
|
1082
|
-
- docs/assets/tutorials_02-dialog.md.
|
1082
|
+
- docs/assets/tutorials_02-dialog.md.D2vSjDVf.js
|
1083
|
+
- docs/assets/tutorials_02-dialog.md.D2vSjDVf.lean.js
|
1083
1084
|
- docs/assets/unit-tests.md.vDsdBbO_.js
|
1084
1085
|
- docs/assets/unit-tests.md.vDsdBbO_.lean.js
|
1085
1086
|
- docs/assets/welcome-to-brut.VSWzl17-.png
|
@@ -1149,6 +1150,8 @@ files:
|
|
1149
1150
|
- docs/brut-js/api/RichString.js.html
|
1150
1151
|
- docs/brut-js/api/Tabs.html
|
1151
1152
|
- docs/brut-js/api/Tabs.js.html
|
1153
|
+
- docs/brut-js/api/Toast.html
|
1154
|
+
- docs/brut-js/api/Toast.js.html
|
1152
1155
|
- docs/brut-js/api/Tracing.html
|
1153
1156
|
- docs/brut-js/api/Tracing.js.html
|
1154
1157
|
- docs/brut-js/api/external-CustomElementRegistry.html
|
@@ -1231,6 +1234,7 @@ files:
|
|
1231
1234
|
- docs/why.html
|
1232
1235
|
- dx/bash_customizations
|
1233
1236
|
- dx/build
|
1237
|
+
- dx/build.pre
|
1234
1238
|
- dx/docker-compose.env
|
1235
1239
|
- dx/dx.sh.lib
|
1236
1240
|
- dx/exec
|
@@ -1404,6 +1408,8 @@ files:
|
|
1404
1408
|
- mkbrut/dx
|
1405
1409
|
- mkbrut/exe/mkbrut
|
1406
1410
|
- mkbrut/lib/mkbrut.rb
|
1411
|
+
- mkbrut/lib/mkbrut/add_segment.rb
|
1412
|
+
- mkbrut/lib/mkbrut/add_segment_options.rb
|
1407
1413
|
- mkbrut/lib/mkbrut/app.rb
|
1408
1414
|
- mkbrut/lib/mkbrut/app_id.rb
|
1409
1415
|
- mkbrut/lib/mkbrut/app_name.rb
|
@@ -1421,6 +1427,7 @@ files:
|
|
1421
1427
|
- mkbrut/lib/mkbrut/ops/base_op.rb
|
1422
1428
|
- mkbrut/lib/mkbrut/ops/copy_file.rb
|
1423
1429
|
- mkbrut/lib/mkbrut/ops/insert_code_in_method.rb
|
1430
|
+
- mkbrut/lib/mkbrut/ops/insert_into_file.rb
|
1424
1431
|
- mkbrut/lib/mkbrut/ops/insert_route.rb
|
1425
1432
|
- mkbrut/lib/mkbrut/ops/mkdir.rb
|
1426
1433
|
- mkbrut/lib/mkbrut/ops/prism_parsing_op.rb
|
@@ -1489,6 +1496,7 @@ files:
|
|
1489
1496
|
- mkbrut/templates/Base/bin/dev
|
1490
1497
|
- mkbrut/templates/Base/bin/release
|
1491
1498
|
- mkbrut/templates/Base/bin/run
|
1499
|
+
- mkbrut/templates/Base/bin/run.run
|
1492
1500
|
- mkbrut/templates/Base/bin/scaffold
|
1493
1501
|
- mkbrut/templates/Base/bin/setup
|
1494
1502
|
- mkbrut/templates/Base/bin/startup-message
|
@@ -1543,6 +1551,14 @@ files:
|
|
1543
1551
|
- mkbrut/templates/segments/Heroku/deploy/Dockerfile
|
1544
1552
|
- mkbrut/templates/segments/Heroku/deploy/docker-entrypoint
|
1545
1553
|
- mkbrut/templates/segments/Heroku/deploy/heroku_config.rb
|
1554
|
+
- mkbrut/templates/segments/Sidekiq/app/boot_sidekiq.rb
|
1555
|
+
- mkbrut/templates/segments/Sidekiq/app/config/sidekiq.yml
|
1556
|
+
- mkbrut/templates/segments/Sidekiq/app/src/back_end/jobs/app_job.rb
|
1557
|
+
- mkbrut/templates/segments/Sidekiq/app/src/back_end/jobs/example_job.rb
|
1558
|
+
- mkbrut/templates/segments/Sidekiq/app/src/back_end/segments/sidekiq_segment.rb
|
1559
|
+
- mkbrut/templates/segments/Sidekiq/bin/run.sidekiq
|
1560
|
+
- mkbrut/templates/segments/Sidekiq/specs/back_end/jobs/example_job.spec.rb
|
1561
|
+
- mkbrut/templates/segments/Sidekiq/specs/integration/sidekiq_works.spec.rb
|
1546
1562
|
- specs/brut/front_end/forms/input.spec.rb
|
1547
1563
|
- specs/brut/front_end/forms/radio_button_group_input.spec.rb
|
1548
1564
|
- specs/brut/front_end/forms/select_input.spec.rb
|
@@ -1575,7 +1591,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1575
1591
|
- !ruby/object:Gem::Version
|
1576
1592
|
version: '0'
|
1577
1593
|
requirements: []
|
1578
|
-
rubygems_version: 3.7.
|
1594
|
+
rubygems_version: 3.7.2
|
1579
1595
|
specification_version: 4
|
1580
1596
|
summary: Web Framework Built around Ruby, Web Standards, Simplicity, and Object-Orientation
|
1581
1597
|
test_files: []
|