develoz-rails 0.1.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 (172) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +31 -0
  3. data/.github/workflows/release.yml +459 -0
  4. data/.rubocop.yml +52 -0
  5. data/.sisyphus/notepads/develoz-rails-template/learnings.md +855 -0
  6. data/.tool-versions +2 -0
  7. data/CHANGELOG.md +28 -0
  8. data/CONTRIBUTING.md +120 -0
  9. data/README.md +76 -0
  10. data/Rakefile +18 -0
  11. data/config/generators.yml +105 -0
  12. data/docs/guide/installation.md +574 -0
  13. data/exe/develoz +6 -0
  14. data/install +98 -0
  15. data/lib/develoz/canonical_fetcher.rb +56 -0
  16. data/lib/develoz/cli.rb +84 -0
  17. data/lib/develoz/generators/base.rb +134 -0
  18. data/lib/develoz/manifest.rb +44 -0
  19. data/lib/develoz/options.rb +55 -0
  20. data/lib/develoz/version.rb +5 -0
  21. data/lib/develoz/version_resolver.rb +103 -0
  22. data/lib/develoz.rb +15 -0
  23. data/lib/generators/develoz/active_resource/active_resource_generator.rb +25 -0
  24. data/lib/generators/develoz/active_resource/templates/application_resource.rb.tt +7 -0
  25. data/lib/generators/develoz/active_resource/templates/example_resource.rb.tt +5 -0
  26. data/lib/generators/develoz/admin/admin_generator.rb +44 -0
  27. data/lib/generators/develoz/admin/templates/admin_base_controller.rb.tt +7 -0
  28. data/lib/generators/develoz/admin/templates/admin_layout.html.erb.tt +38 -0
  29. data/lib/generators/develoz/admin/templates/dashboard_controller.rb.tt +7 -0
  30. data/lib/generators/develoz/admin/templates/dashboard_index.html.erb.tt +2 -0
  31. data/lib/generators/develoz/admin/templates/routes.rb.tt +3 -0
  32. data/lib/generators/develoz/agents_docs/agents_docs_generator.rb +50 -0
  33. data/lib/generators/develoz/agents_docs/templates/.github/pull_request_template.md.tt +13 -0
  34. data/lib/generators/develoz/agents_docs/templates/AGENTS.md.tt +36 -0
  35. data/lib/generators/develoz/agents_docs/templates/docs/development.md.tt +121 -0
  36. data/lib/generators/develoz/agents_docs/templates/docs/performance.md.tt +46 -0
  37. data/lib/generators/develoz/agents_docs/templates/docs/testing.md.tt +92 -0
  38. data/lib/generators/develoz/agents_docs/templates/spec/cassettes/Example_API/fetches_data_from_an_external_API.yml.tt +23 -0
  39. data/lib/generators/develoz/agents_docs/templates/spec/requests/example_api_spec.rb.tt +14 -0
  40. data/lib/generators/develoz/agents_docs/templates/spec/support/faraday.rb.tt +19 -0
  41. data/lib/generators/develoz/agents_docs/templates/spec/support/vcr.rb.tt +11 -0
  42. data/lib/generators/develoz/api/api_generator.rb +55 -0
  43. data/lib/generators/develoz/api/templates/app/blueprints/example_blueprint.rb.tt +6 -0
  44. data/lib/generators/develoz/api/templates/app/controllers/api/v1/base_controller.rb.tt +96 -0
  45. data/lib/generators/develoz/api/templates/config/initializers/blueprinter.rb.tt +16 -0
  46. data/lib/generators/develoz/api/templates/config/initializers/rswag_api.rb.tt +15 -0
  47. data/lib/generators/develoz/api/templates/config/initializers/rswag_ui.rb.tt +17 -0
  48. data/lib/generators/develoz/api/templates/spec/requests/api/v1/examples_spec.rb.tt +25 -0
  49. data/lib/generators/develoz/auth/auth_generator.rb +82 -0
  50. data/lib/generators/develoz/auth/templates/app/controllers/concerns/authentication.rb.tt +53 -0
  51. data/lib/generators/develoz/auth/templates/app/controllers/passwords_controller.rb.tt +35 -0
  52. data/lib/generators/develoz/auth/templates/app/controllers/sessions_controller.rb.tt +22 -0
  53. data/lib/generators/develoz/auth/templates/app/mailers/passwords_mailer.rb.tt +8 -0
  54. data/lib/generators/develoz/auth/templates/app/models/current.rb.tt +5 -0
  55. data/lib/generators/develoz/auth/templates/app/models/user.rb.tt +7 -0
  56. data/lib/generators/develoz/auth/templates/app/views/passwords/edit.html.erb.tt +9 -0
  57. data/lib/generators/develoz/auth/templates/app/views/passwords_mailer/reset.html.erb.tt +6 -0
  58. data/lib/generators/develoz/auth/templates/app/views/sessions/new.html.erb.tt +11 -0
  59. data/lib/generators/develoz/auth/templates/db/migrate/create_users.rb.tt +13 -0
  60. data/lib/generators/develoz/auth/templates/spec/requests/passwords_spec.rb.tt +60 -0
  61. data/lib/generators/develoz/auth/templates/spec/requests/sessions_spec.rb.tt +37 -0
  62. data/lib/generators/develoz/ci/ci_generator.rb +66 -0
  63. data/lib/generators/develoz/ci/templates/.github/workflows/ci.yml.tt +18 -0
  64. data/lib/generators/develoz/ci/templates/.haml-lint.yml.tt +12 -0
  65. data/lib/generators/develoz/ci/templates/.markdownlint.json.tt +10 -0
  66. data/lib/generators/develoz/ci/templates/.reek.yml.tt +28 -0
  67. data/lib/generators/develoz/ci/templates/.rubocop.yml.tt +22 -0
  68. data/lib/generators/develoz/ci/templates/.stylelintrc.json.tt +4 -0
  69. data/lib/generators/develoz/ci/templates/.yamllint.tt +14 -0
  70. data/lib/generators/develoz/ci/templates/Rakefile.tt +73 -0
  71. data/lib/generators/develoz/ci/templates/bin/ci.tt +6 -0
  72. data/lib/generators/develoz/ci/templates/biome.json.tt +41 -0
  73. data/lib/generators/develoz/ci/templates/config/ci.rb.tt +23 -0
  74. data/lib/generators/develoz/concerns/concerns_generator.rb +48 -0
  75. data/lib/generators/develoz/concerns/templates/app/models/concerns/configurable.rb.tt +120 -0
  76. data/lib/generators/develoz/concerns/templates/app/models/concerns/optimized_finders.rb.tt +93 -0
  77. data/lib/generators/develoz/concerns/templates/app/models/concerns/searchable_concern.rb.tt +31 -0
  78. data/lib/generators/develoz/concerns/templates/app/models/concerns/transitionable.rb.tt +144 -0
  79. data/lib/generators/develoz/concerns/templates/app/models/configuration.rb.tt +104 -0
  80. data/lib/generators/develoz/concerns/templates/db/migrate/add_status_transitions.rb.tt +30 -0
  81. data/lib/generators/develoz/concerns/templates/db/migrate/create_configurations.rb.tt +25 -0
  82. data/lib/generators/develoz/concerns/templates/spec/models/concerns/configurable_spec.rb.tt +172 -0
  83. data/lib/generators/develoz/concerns/templates/spec/models/concerns/optimized_finders_spec.rb.tt +200 -0
  84. data/lib/generators/develoz/concerns/templates/spec/models/concerns/searchable_concern_spec.rb.tt +84 -0
  85. data/lib/generators/develoz/concerns/templates/spec/models/concerns/transitionable_spec.rb.tt +234 -0
  86. data/lib/generators/develoz/concerns/templates/spec/models/configuration_spec.rb.tt +223 -0
  87. data/lib/generators/develoz/database/database_generator.rb +44 -0
  88. data/lib/generators/develoz/database/templates/config/database.yml.tt +53 -0
  89. data/lib/generators/develoz/database/templates/config/initializers/pg_search.rb.tt +5 -0
  90. data/lib/generators/develoz/database/templates/db/migrate/create_pg_extensions.rb.tt +13 -0
  91. data/lib/generators/develoz/db_backup/db_backup_generator.rb +47 -0
  92. data/lib/generators/develoz/db_backup/templates/backup_rake.tt +48 -0
  93. data/lib/generators/develoz/db_backup/templates/bin_db_backup.tt +25 -0
  94. data/lib/generators/develoz/db_backup/templates/compose_service.tt +14 -0
  95. data/lib/generators/develoz/doc_specs/doc_specs_generator.rb +33 -0
  96. data/lib/generators/develoz/doc_specs/templates/bin/generate-docs.tt +392 -0
  97. data/lib/generators/develoz/doc_specs/templates/lib/tasks/docs_check.rake.tt +8 -0
  98. data/lib/generators/develoz/doc_specs/templates/spec/support/doc_screenshot_helper.rb.tt +17 -0
  99. data/lib/generators/develoz/doc_specs/templates/spec/system/example_doc_spec.rb.tt +38 -0
  100. data/lib/generators/develoz/docker/docker_generator.rb +54 -0
  101. data/lib/generators/develoz/docker/templates/bin_dev.tt +5 -0
  102. data/lib/generators/develoz/docker/templates/bin_docker_entrypoint.tt +8 -0
  103. data/lib/generators/develoz/docker/templates/bin_run.tt +152 -0
  104. data/lib/generators/develoz/docker/templates/bin_setup.tt +15 -0
  105. data/lib/generators/develoz/docker/templates/docker-compose.yml.tt +59 -0
  106. data/lib/generators/develoz/docker/templates/dockerfile_dev.tt +24 -0
  107. data/lib/generators/develoz/docs_render/docs_render_generator.rb +46 -0
  108. data/lib/generators/develoz/docs_render/templates/app/assets/stylesheets/documentation.scss.tt +145 -0
  109. data/lib/generators/develoz/docs_render/templates/app/controllers/docs_controller.rb.tt +7 -0
  110. data/lib/generators/develoz/docs_render/templates/app/javascript/docs.js.tt +15 -0
  111. data/lib/generators/develoz/docs_render/templates/app/models/document.rb.tt +189 -0
  112. data/lib/generators/develoz/docs_render/templates/app/views/docs/show.html.erb.tt +7 -0
  113. data/lib/generators/develoz/docs_render/templates/config/initializers/redcarpet_rouge.rb.tt +16 -0
  114. data/lib/generators/develoz/frontend_core/frontend_core_generator.rb +40 -0
  115. data/lib/generators/develoz/frontend_core/templates/.annotaterb.yml.tt +16 -0
  116. data/lib/generators/develoz/frontend_core/templates/config/importmap.rb.tt +12 -0
  117. data/lib/generators/develoz/frontend_core/templates/config/initializers/pagy.rb.tt +10 -0
  118. data/lib/generators/develoz/install/install_generator.rb +51 -0
  119. data/lib/generators/develoz/kamal/kamal_generator.rb +59 -0
  120. data/lib/generators/develoz/kamal/templates/accessories_postgres.yml.tt +14 -0
  121. data/lib/generators/develoz/kamal/templates/deploy.yml.tt +43 -0
  122. data/lib/generators/develoz/kamal/templates/dockerfile_prod.tt +54 -0
  123. data/lib/generators/develoz/kamal/templates/kamal_secrets.tt +22 -0
  124. data/lib/generators/develoz/maintenance/maintenance_generator.rb +29 -0
  125. data/lib/generators/develoz/maintenance/templates/app/tasks/maintenance/example_task.rb.tt +20 -0
  126. data/lib/generators/develoz/maintenance/templates/lib/tasks/maintenance_counters.rake.tt +27 -0
  127. data/lib/generators/develoz/push/push_generator.rb +61 -0
  128. data/lib/generators/develoz/push/templates/app/javascript/pwa/subscription.js.tt +57 -0
  129. data/lib/generators/develoz/push/templates/app/models/push_subscription.rb.tt +14 -0
  130. data/lib/generators/develoz/push/templates/app/services/push_notification_service.rb.tt +36 -0
  131. data/lib/generators/develoz/push/templates/app/views/pwa/sw_push_handlers.js.tt +49 -0
  132. data/lib/generators/develoz/push/templates/constants_env.tt +5 -0
  133. data/lib/generators/develoz/push/templates/db/migrate/create_push_subscriptions.rb.tt +15 -0
  134. data/lib/generators/develoz/pwa/pwa_generator.rb +46 -0
  135. data/lib/generators/develoz/pwa/templates/app/controllers/pwa_controller.rb.tt +17 -0
  136. data/lib/generators/develoz/pwa/templates/app/javascript/pwa/registration.js.tt +25 -0
  137. data/lib/generators/develoz/pwa/templates/app/views/pwa/manifest.json.erb.tt +24 -0
  138. data/lib/generators/develoz/pwa/templates/app/views/pwa/offline.html.erb.tt +51 -0
  139. data/lib/generators/develoz/pwa/templates/app/views/pwa/service-worker.js.tt +109 -0
  140. data/lib/generators/develoz/pwa/templates/routes.rb.tt +3 -0
  141. data/lib/generators/develoz/solid/solid_generator.rb +52 -0
  142. data/lib/generators/develoz/solid/templates/app/jobs/application_job.rb.tt +7 -0
  143. data/lib/generators/develoz/solid/templates/config/cable.yml.tt +10 -0
  144. data/lib/generators/develoz/solid/templates/config/cache.yml.tt +16 -0
  145. data/lib/generators/develoz/solid/templates/config/initializers/mission_control.rb.tt +8 -0
  146. data/lib/generators/develoz/solid/templates/config/initializers/solid.rb.tt +7 -0
  147. data/lib/generators/develoz/solid/templates/config/queue.yml.tt +18 -0
  148. data/lib/generators/develoz/solid/templates/config/recurring.yml.tt +20 -0
  149. data/lib/generators/develoz/strict_loading/strict_loading_generator.rb +17 -0
  150. data/lib/generators/develoz/strict_loading/templates/config/initializers/strict_loading.rb.tt +13 -0
  151. data/lib/generators/develoz/testing/templates/rspec.tt +2 -0
  152. data/lib/generators/develoz/testing/templates/rspec_parallel.tt +2 -0
  153. data/lib/generators/develoz/testing/templates/spec/rails_helper.rb.tt +32 -0
  154. data/lib/generators/develoz/testing/templates/spec/spec_helper.rb.tt +31 -0
  155. data/lib/generators/develoz/testing/testing_generator.rb +39 -0
  156. data/lib/generators/develoz/tooling/templates/constants.rb.tt +17 -0
  157. data/lib/generators/develoz/tooling/templates/env.example.tt +4 -0
  158. data/lib/generators/develoz/tooling/templates/vscode/extensions.json.tt +8 -0
  159. data/lib/generators/develoz/tooling/templates/vscode/settings.json.tt +26 -0
  160. data/lib/generators/develoz/tooling/templates/vscode/tasks.json.tt +26 -0
  161. data/lib/generators/develoz/tooling/tooling_generator.rb +33 -0
  162. data/lib/generators/develoz/ui/templates/bin/setup_develoz_ui.tt +20 -0
  163. data/lib/generators/develoz/ui/ui_generator.rb +57 -0
  164. data/lib/generators/develoz/versioning/templates/app/helpers/application_helper.rb.tt +7 -0
  165. data/lib/generators/develoz/versioning/templates/app/views/shared/_app_version.html.erb.tt +3 -0
  166. data/lib/generators/develoz/versioning/templates/spec/helpers/application_helper_spec.rb.tt +11 -0
  167. data/lib/generators/develoz/versioning/versioning_generator.rb +48 -0
  168. data/lib/tasks/canonical.rake +27 -0
  169. data/templates/.keep +0 -0
  170. data/templates/CANONICAL_SOURCES.md +93 -0
  171. data/templates/pull_request_template.md.tt +13 -0
  172. metadata +383 -0
@@ -0,0 +1,3 @@
1
+ <%% if app_version.present? %>
2
+ <span class="text-xs text-gray-400 dark:text-gray-500"><%%= app_version %></span>
3
+ <%% end %>
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+
5
+ RSpec.describe ApplicationHelper, type: :helper do
6
+ describe "#app_version" do
7
+ it "returns the APP_VERSION constant" do
8
+ expect(helper.app_version).to eq(APP_VERSION)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "develoz"
4
+
5
+ module Develoz
6
+ module Generators
7
+ class VersioningGenerator < Develoz::Generators::Base
8
+ def self.source_root
9
+ File.expand_path("templates", __dir__)
10
+ end
11
+
12
+ def inject_app_version_constant
13
+ inject_once(
14
+ into: "config/initializers/constants.rb",
15
+ content: ' APP_VERSION = ENV.fetch("APP_VERSION", "dev")',
16
+ after: "# additional constants appended by generators\n"
17
+ )
18
+ inject_once(
19
+ into: "config/initializers/constants.rb",
20
+ content: "APP_VERSION = Constants::APP_VERSION"
21
+ )
22
+ end
23
+
24
+ def create_application_helper
25
+ helper_path = File.join(destination_root, "app/helpers/application_helper.rb")
26
+
27
+ if File.exist?(helper_path)
28
+ inject_once(
29
+ into: "app/helpers/application_helper.rb",
30
+ content: " def app_version\n APP_VERSION\n end",
31
+ before: /^end\s*$/
32
+ )
33
+ else
34
+ template "app/helpers/application_helper.rb.tt", "app/helpers/application_helper.rb"
35
+ end
36
+ end
37
+
38
+ def create_app_version_partial
39
+ template "app/views/shared/_app_version.html.erb.tt",
40
+ "app/views/shared/_app_version.html.erb"
41
+ end
42
+
43
+ def create_application_helper_spec
44
+ template "spec/helpers/application_helper_spec.rb.tt", "spec/helpers/application_helper_spec.rb"
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :develoz do
4
+ desc "Fetch canonical files from source repos"
5
+ task fetch_canonical: :environment do
6
+ $LOAD_PATH.unshift(File.expand_path("../../lib", __dir__))
7
+ require "develoz"
8
+
9
+ mapping = {
10
+ "pull_request_template" => {
11
+ repo: "develoz-com/inscripto-v2",
12
+ path: ".github/pull_request_template.md",
13
+ dest: "spec/fixtures/canonical/develoz-com-inscripto-v2/.github/pull_request_template.md"
14
+ }
15
+ }
16
+
17
+ mapping.each do |name, config|
18
+ puts "Fetching #{name}..."
19
+ Develoz::CanonicalFetcher.fetch(
20
+ repo: config[:repo],
21
+ path: config[:path],
22
+ dest: config[:dest]
23
+ )
24
+ puts " -> #{config[:dest]}"
25
+ end
26
+ end
27
+ end
data/templates/.keep ADDED
File without changes
@@ -0,0 +1,93 @@
1
+ # Canonical Sources
2
+
3
+ This document maps generator tasks to their canonical source files in external repositories. Each entry describes where a file is fetched from, where it is stored as a fixture, and how it is used in template generation.
4
+
5
+ ## Canonical File Mapping
6
+
7
+ | Generator/Task | Source Repo | Source Path | Fixture Path | Template Destination | Substitutions |
8
+ |---|---|---|---|---|---|
9
+ | pull_request_template (T6 demo) | develoz-com/inscripto-v2 | `.github/pull_request_template.md` | `spec/fixtures/canonical/develoz-com-inscripto-v2/.github/pull_request_template.md` | `templates/pull_request_template.md.tt` | verbatim |
10
+ | concerns (T10) | develoz-com/looper_core | `app/concerns/...` | `spec/fixtures/canonical/develoz-com-looper_core/...` | `templates/concerns/...tt` | app_name, app_class |
11
+ | ci (T11) | develoz-com/ams2stats | `bin/ci`, `config/ci.rb` | `spec/fixtures/canonical/develoz-com-ams2stats/...` | `templates/bin/ci.tt`, `templates/config/ci.rb.tt` | app_name, app_class |
12
+ | solid (T12) | mauriciozaffari/ams2stats | `config/queue.yml`, `config/cache.yml`, `config/cable.yml`, `config/recurring.yml`, `config/initializers/mission_control.rb`, `app/jobs/application_job.rb` | `spec/fixtures/canonical/mauriciozaffari-ams2stats/...` | `templates/config/queue.yml.tt`, `templates/config/cache.yml.tt`, `templates/config/cable.yml.tt`, `templates/config/recurring.yml.tt`, `templates/config/initializers/mission_control.rb.tt`, `templates/app/jobs/application_job.rb.tt` | adapted (sqlite→postgres), ENV vars |
13
+ | pwa (T13) | develoz-com/inscripto-v2 | `app/views/pwa/...` | `spec/fixtures/canonical/develoz-com-inscripto-v2/...` | `templates/pwa/...tt` | app_name, app_class |
14
+ | push (T14) | develoz-com/inscripto-v2 | `app/models/push/...` | `spec/fixtures/canonical/develoz-com-inscripto-v2/...` | `templates/push/...tt` | app_name, app_class |
15
+ | kamal (T15) | develoz-com/inscripto-v2 | `config/deploy.yml` | `spec/fixtures/canonical/develoz-com-inscripto-v2/...` | `templates/config/deploy.yml.tt` | app_name, ENV vars |
16
+ | admin (T16) | develoz-com/inscripto-v2 | `app/admin/...` | `spec/fixtures/canonical/develoz-com-inscripto-v2/...` | `templates/admin/...tt` | app_name, app_class |
17
+ | develoz_ui (T17) | develoz-com/inscripto-v2 | `app/components/develoz_ui/...` | `spec/fixtures/canonical/develoz-com-inscripto-v2/...` | `templates/develoz_ui/...tt` | app_name, app_class |
18
+ | bin/run (T18) | develoz-com/agent | `bin/run` | `spec/fixtures/canonical/develoz-com-agent/bin/run` | `lib/generators/develoz/docker/templates/bin_run.tt` | verbatim |
19
+ | ci (T13) | mauriciozaffari/ams2stats | `bin/ci`, `config/ci.rb` | — | `templates/bin/ci.tt`, `templates/config/ci.rb.tt` | adapted, extended linter set |
20
+ | ci (T13) | LooperInsights/looper_core | `.rubocop.yml`, `.reek.yml`, `biome.json`, `.stylelintrc.json`, `.haml-lint.yml`, `.markdownlint.yaml`, `.yamllint` | — | `templates/.rubocop.yml.tt`, `templates/.reek.yml.tt`, `templates/biome.json.tt`, `templates/.stylelintrc.json.tt`, `templates/.haml-lint.yml.tt`, `templates/.markdownlint.json.tt`, `templates/.yamllint.tt` | adapted, simplified for new Rails apps |
21
+ | ci lint Rakefile (F1) | LooperInsights/looper_core | `Rakefile` | `spec/fixtures/canonical/LooperInsights-looper_core/Rakefile` | `lib/generators/develoz/ci/templates/Rakefile.tt` | verbatim |
22
+ | tooling constants (F1) | LooperInsights/looper_core | `config/constants.rb` | `spec/fixtures/canonical/LooperInsights-looper_core/config/constants.rb` | `lib/generators/develoz/tooling/templates/constants.rb.tt` | Constants namespace, app_name/app_class, minimal illustrative set |
23
+ | ci (T13) | — | — | — | `templates/.github/workflows/ci.yml.tt` | authored (simple CI runner) |
24
+ | concerns (T15) | LooperInsights/looper_core | `app/models/concerns/searchable_concern.rb`, `app/models/concerns/optimized_finders.rb`, `app/models/concerns/transitionable.rb`, `app/models/concerns/configurable.rb` | `spec/fixtures/canonical/LooperInsights-looper_core/app/models/concerns/...` | `templates/app/models/concerns/...tt` | verbatim |
25
+ | concerns (T15) | LooperInsights/looper_core | `db/migrate/20260506120000_add_status_columns_to_merchandizing_pages.rb`, `db/migrate/20250524195130_create_configurations.rb` | — | `templates/db/migrate/add_status_transitions.rb.tt`, `templates/db/migrate/create_configurations.rb.tt` | adapted (generic table names) |
26
+ | concerns (T15) | — | — | — | `templates/spec/models/concerns/...tt` | authored (modeled on looper_core specs) |
27
+ | docs_render (T19) | LooperInsights/looper_core | `app/models/document.rb`, `app/javascript/docs.js`, `app/assets/stylesheets/documentation.scss` | `spec/fixtures/canonical/LooperInsights-looper_core/app/models/document.rb`, `.../app/javascript/docs.js`, `.../app/assets/stylesheets/documentation.scss` | `templates/app/models/document.rb.tt`, `templates/app/javascript/docs.js.tt`, `templates/app/assets/stylesheets/documentation.scss.tt` | verbatim |
28
+ | docs_render (T19) | LooperInsights/looper_core | `app/controllers/docs_controller.rb` | `spec/fixtures/canonical/LooperInsights-looper_core/app/controllers/docs_controller.rb` | `lib/generators/develoz/docs_render/templates/app/controllers/docs_controller.rb.tt` | adapted (AdminController -> ApplicationController) |
29
+ | docs_render (T19) | LooperInsights/looper_core | `app/views/docs/show.html.haml` | — | `templates/app/views/docs/show.html.erb.tt` | adapted (HAML -> ERB, inner ERB escaped with `<%%= %>`) |
30
+ | docs_render (T19) | — | — | — | `templates/config/initializers/redcarpet_rouge.rb.tt` | authored (looper_core has no separate initializer; Document model handles config inline) |
31
+ | doc_specs (T20) | LooperInsights/looper_core | `bin/generate-docs` | `spec/fixtures/canonical/LooperInsights-looper_core/bin/generate-docs` | `templates/bin/generate-docs.tt` | verbatim |
32
+ | doc_specs (T20) | LooperInsights/looper_core | `spec/rails_helper.rb` (inline module) | — | `templates/spec/support/doc_screenshot_helper.rb.tt` | authored (extracted from rails_helper.rb inline module into standalone support file) |
33
+ | doc_specs (T20) | LooperInsights/looper_core | `Rakefile` (inline task) | — | `templates/lib/tasks/docs_check.rake.tt` | adapted (extracted docs:check namespace from Rakefile into standalone rake file) |
34
+ | doc_specs (T20) | — | — | — | `templates/spec/system/example_doc_spec.rb.tt` | authored (demonstrates @category, @order, doc_screenshot pattern) |
35
+ | agents_docs (T21) | develoz-com/agent | `AGENTS.md` | — | `lib/generators/develoz/agents_docs/templates/AGENTS.md.tt` | adapted (generic for any develoz app; removed bin/run, develoz_agent CLI, agent-specific docs) |
36
+ | agents_docs (T21) | develoz-com/agent | `docs/development.md` | — | `lib/generators/develoz/agents_docs/templates/docs/development.md.tt` | adapted (removed bin/run, develoz_agent CLI, agent-specific sections) |
37
+ | agents_docs (T21) | develoz-com/agent | `docs/testing.md` | — | `lib/generators/develoz/agents_docs/templates/docs/testing.md.tt` | adapted (removed bin/run, agent-specific external tool stubs) |
38
+ | agents_docs (T21) | develoz-com/agent | `docs/performance.md` | — | `lib/generators/develoz/agents_docs/templates/docs/performance.md.tt` | adapted (removed agent-specific query paths, indexes, Jira caching) |
39
+ | agents_docs (T21) | develoz-com/inscripto-v2 | `.github/pull_request_template.md` | `spec/fixtures/canonical/develoz-com-inscripto-v2/.github/pull_request_template.md` | `lib/generators/develoz/agents_docs/templates/.github/pull_request_template.md.tt` | verbatim |
40
+ | agents_docs (T21) | — | — | — | `lib/generators/develoz/agents_docs/templates/spec/support/vcr.rb.tt` | authored (VCR config with WebMock) |
41
+ | agents_docs (T21) | — | — | — | `lib/generators/develoz/agents_docs/templates/spec/support/faraday.rb.tt` | authored (Faraday factory with retry middleware) |
42
+ | agents_docs (T21) | — | — | — | `lib/generators/develoz/agents_docs/templates/spec/requests/example_api_spec.rb.tt` | authored (demonstrates VCR + Faraday pattern) |
43
+ | agents_docs (T21) | — | — | — | `lib/generators/develoz/agents_docs/templates/spec/cassettes/Example_API/fetches_data_from_an_external_API.yml.tt` | authored (stub VCR cassette fixture) |
44
+ | versioning (T36) | develoz-com/inscripto-v2 | `app/helpers/application_helper.rb` (app_version method) | `spec/fixtures/canonical/develoz-com-inscripto-v2/app/helpers/app_version.rb` | `lib/generators/develoz/versioning/templates/app/helpers/application_helper.rb.tt` | verbatim (method snippet) |
45
+ | versioning (T36) | develoz-com/inscripto-v2 | `config/constants.rb` (APP_VERSION line) | — | `lib/generators/develoz/versioning/versioning_generator.rb` (inject_once) | adapted (injected into constants.rb after marker) |
46
+ | versioning (T36) | — | — | — | `lib/generators/develoz/versioning/templates/app/views/shared/_app_version.html.erb.tt` | authored (extracted from inscripto's inline sidebar version display into reusable partial) |
47
+ | api (T22) | LooperInsights/looper_core | `app/controllers/api/v3/base_controller.rb` | — | `lib/generators/develoz/api/templates/app/controllers/api/v1/base_controller.rb.tt` | adapted (v3→v1, removed Cognito/auth_validation, added `def authenticate; end` stub, kept Pagy::Backend + render_json_error + pagination) |
48
+ | api (T22) | LooperInsights/looper_core | `config/initializers/blueprinter.rb` | — | `lib/generators/develoz/api/templates/config/initializers/blueprinter.rb.tt` | adapted (kept LowerCamelTransformer + default_transformers + datetime_format, removed BlueprinterActiveRecord::Preloader and unless lambda) |
49
+ | api (T22) | LooperInsights/looper_core | `app/serializers/client_blueprint.rb` (pattern) | — | `lib/generators/develoz/api/templates/app/blueprints/example_blueprint.rb.tt` | authored (minimal blueprint demonstrating identifier + fields, inherits Blueprinter::Base directly since no BaseBlueprint in generated app) |
50
+ | api (T22) | LooperInsights/looper_core | `config/initializers/rswag_api.rb` | — | `lib/generators/develoz/api/templates/config/initializers/rswag_api.rb.tt` | adapted (added frozen_string_literal, otherwise verbatim) |
51
+ | api (T22) | LooperInsights/looper_core | `config/initializers/rswag_ui.rb` | — | `lib/generators/develoz/api/templates/config/initializers/rswag_ui.rb.tt` | adapted (endpoint label changed from 'Looper Core API V3' to 'API V1', path v3→v1, added frozen_string_literal) |
52
+ | api (T22) | LooperInsights/looper_core | `spec/requests/api/v3/clients_spec.rb` (pattern) | — | `lib/generators/develoz/api/templates/spec/requests/api/v1/examples_spec.rb.tt` | authored (minimal rswag spec demonstrating path/response DSL, no auth dependencies) |
53
+
54
+ ## Pipeline Workflow
55
+
56
+ For each canonical file:
57
+
58
+ 1. **Fetch**: Use `Develoz::CanonicalFetcher.fetch(repo:, path:, dest:)` to download the raw file from GitHub and save it to `spec/fixtures/canonical/<repo-owner-repo>/<path>`.
59
+ 2. **Fixture**: Commit the fixture file to the repo (byte-identical to source).
60
+ 3. **Template**: Create a `.tt` ERB template in `templates/` that copies the fixture content, applying substitutions (app_name, app_class, ENV vars) as needed.
61
+ 4. **Fidelity Test**: Write a spec in `spec/fidelity/<name>_fidelity_spec.rb` that renders the template and compares it to the fixture using the `match_canonical` matcher.
62
+
63
+ ## Substitution Variables
64
+
65
+ - **app_name**: Lowercase app name (e.g., "my_app")
66
+ - **app_class**: CamelCase app name (e.g., "MyApp")
67
+ - **ENV vars**: Environment-specific values (e.g., `<%= ENV["APP_VERSION"] %>`)
68
+ - **verbatim**: No substitution; file is copied as-is
69
+
70
+ ## Running the Fetcher
71
+
72
+ To fetch all canonical files:
73
+
74
+ ```bash
75
+ bundle exec rake develoz:fetch_canonical
76
+ ```
77
+
78
+ To fetch a single file, call the fetcher directly:
79
+
80
+ ```ruby
81
+ Develoz::CanonicalFetcher.fetch(
82
+ repo: "develoz-com/inscripto-v2",
83
+ path: ".github/pull_request_template.md",
84
+ dest: "spec/fixtures/canonical/develoz-com-inscripto-v2/.github/pull_request_template.md"
85
+ )
86
+ ```
87
+
88
+ ## Notes
89
+
90
+ - All fixtures are committed to the repo and must be byte-identical to their source.
91
+ - Templates are ERB files that render fixtures with substitutions.
92
+ - Fidelity tests verify that rendered templates match their fixtures.
93
+ - Private repos (looper_core, inscripto-v2, agent) require GitHub authentication via `GH_TOKEN` or `gh auth token`.
@@ -0,0 +1,13 @@
1
+ > [!NOTE]
2
+ > **Changes:** <!-- Describe what has been changed in this PR and, most importantly, why it's changed. Use 3-5 bullet points. -->
3
+ >
4
+
5
+ > [!TIP]
6
+ > **How to review:** <!-- Describe what the reviewer of this PR should be looking for and what results are expected. -->
7
+ >
8
+
9
+ > [!WARNING]
10
+ > **Risks:** <!-- Is there any risk attached to merging this PR? Select the appropriate box. -->
11
+ > - [x] none
12
+ > - [ ] low
13
+ > - [ ] high
metadata ADDED
@@ -0,0 +1,383 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: develoz-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Mauricio Zaffari
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: railties
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '8.1'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '8.1'
26
+ - !ruby/object:Gem::Dependency
27
+ name: thor
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.3'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.3'
40
+ - !ruby/object:Gem::Dependency
41
+ name: tty-prompt
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.23'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.23'
54
+ - !ruby/object:Gem::Dependency
55
+ name: aruba
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.2'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.2'
68
+ - !ruby/object:Gem::Dependency
69
+ name: rspec
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.13'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.13'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rubocop
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.65'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.65'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rubocop-performance
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.21'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1.21'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rubocop-rails
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '2.25'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '2.25'
124
+ - !ruby/object:Gem::Dependency
125
+ name: rubocop-rspec
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '3.0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '3.0'
138
+ - !ruby/object:Gem::Dependency
139
+ name: simplecov
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '0.22'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0.22'
152
+ - !ruby/object:Gem::Dependency
153
+ name: simplecov-lcov
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '0.8'
159
+ type: :development
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '0.8'
166
+ - !ruby/object:Gem::Dependency
167
+ name: webmock
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '3.23'
173
+ type: :development
174
+ prerelease: false
175
+ version_requirements: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '3.23'
180
+ description: Develoz Rails provides a CLI and composable generators for creating Rails
181
+ 8.1 applications with a tested core stack and opt-in API, authentication, UI, deployment,
182
+ and operations features.
183
+ email:
184
+ - mauriciozaffari@gmail.com
185
+ executables:
186
+ - develoz
187
+ extensions: []
188
+ extra_rdoc_files: []
189
+ files:
190
+ - ".github/workflows/ci.yml"
191
+ - ".github/workflows/release.yml"
192
+ - ".rubocop.yml"
193
+ - ".sisyphus/notepads/develoz-rails-template/learnings.md"
194
+ - ".tool-versions"
195
+ - CHANGELOG.md
196
+ - CONTRIBUTING.md
197
+ - README.md
198
+ - Rakefile
199
+ - config/generators.yml
200
+ - docs/guide/installation.md
201
+ - exe/develoz
202
+ - install
203
+ - lib/develoz.rb
204
+ - lib/develoz/canonical_fetcher.rb
205
+ - lib/develoz/cli.rb
206
+ - lib/develoz/generators/base.rb
207
+ - lib/develoz/manifest.rb
208
+ - lib/develoz/options.rb
209
+ - lib/develoz/version.rb
210
+ - lib/develoz/version_resolver.rb
211
+ - lib/generators/develoz/active_resource/active_resource_generator.rb
212
+ - lib/generators/develoz/active_resource/templates/application_resource.rb.tt
213
+ - lib/generators/develoz/active_resource/templates/example_resource.rb.tt
214
+ - lib/generators/develoz/admin/admin_generator.rb
215
+ - lib/generators/develoz/admin/templates/admin_base_controller.rb.tt
216
+ - lib/generators/develoz/admin/templates/admin_layout.html.erb.tt
217
+ - lib/generators/develoz/admin/templates/dashboard_controller.rb.tt
218
+ - lib/generators/develoz/admin/templates/dashboard_index.html.erb.tt
219
+ - lib/generators/develoz/admin/templates/routes.rb.tt
220
+ - lib/generators/develoz/agents_docs/agents_docs_generator.rb
221
+ - lib/generators/develoz/agents_docs/templates/.github/pull_request_template.md.tt
222
+ - lib/generators/develoz/agents_docs/templates/AGENTS.md.tt
223
+ - lib/generators/develoz/agents_docs/templates/docs/development.md.tt
224
+ - lib/generators/develoz/agents_docs/templates/docs/performance.md.tt
225
+ - lib/generators/develoz/agents_docs/templates/docs/testing.md.tt
226
+ - lib/generators/develoz/agents_docs/templates/spec/cassettes/Example_API/fetches_data_from_an_external_API.yml.tt
227
+ - lib/generators/develoz/agents_docs/templates/spec/requests/example_api_spec.rb.tt
228
+ - lib/generators/develoz/agents_docs/templates/spec/support/faraday.rb.tt
229
+ - lib/generators/develoz/agents_docs/templates/spec/support/vcr.rb.tt
230
+ - lib/generators/develoz/api/api_generator.rb
231
+ - lib/generators/develoz/api/templates/app/blueprints/example_blueprint.rb.tt
232
+ - lib/generators/develoz/api/templates/app/controllers/api/v1/base_controller.rb.tt
233
+ - lib/generators/develoz/api/templates/config/initializers/blueprinter.rb.tt
234
+ - lib/generators/develoz/api/templates/config/initializers/rswag_api.rb.tt
235
+ - lib/generators/develoz/api/templates/config/initializers/rswag_ui.rb.tt
236
+ - lib/generators/develoz/api/templates/spec/requests/api/v1/examples_spec.rb.tt
237
+ - lib/generators/develoz/auth/auth_generator.rb
238
+ - lib/generators/develoz/auth/templates/app/controllers/concerns/authentication.rb.tt
239
+ - lib/generators/develoz/auth/templates/app/controllers/passwords_controller.rb.tt
240
+ - lib/generators/develoz/auth/templates/app/controllers/sessions_controller.rb.tt
241
+ - lib/generators/develoz/auth/templates/app/mailers/passwords_mailer.rb.tt
242
+ - lib/generators/develoz/auth/templates/app/models/current.rb.tt
243
+ - lib/generators/develoz/auth/templates/app/models/user.rb.tt
244
+ - lib/generators/develoz/auth/templates/app/views/passwords/edit.html.erb.tt
245
+ - lib/generators/develoz/auth/templates/app/views/passwords_mailer/reset.html.erb.tt
246
+ - lib/generators/develoz/auth/templates/app/views/sessions/new.html.erb.tt
247
+ - lib/generators/develoz/auth/templates/db/migrate/create_users.rb.tt
248
+ - lib/generators/develoz/auth/templates/spec/requests/passwords_spec.rb.tt
249
+ - lib/generators/develoz/auth/templates/spec/requests/sessions_spec.rb.tt
250
+ - lib/generators/develoz/ci/ci_generator.rb
251
+ - lib/generators/develoz/ci/templates/.github/workflows/ci.yml.tt
252
+ - lib/generators/develoz/ci/templates/.haml-lint.yml.tt
253
+ - lib/generators/develoz/ci/templates/.markdownlint.json.tt
254
+ - lib/generators/develoz/ci/templates/.reek.yml.tt
255
+ - lib/generators/develoz/ci/templates/.rubocop.yml.tt
256
+ - lib/generators/develoz/ci/templates/.stylelintrc.json.tt
257
+ - lib/generators/develoz/ci/templates/.yamllint.tt
258
+ - lib/generators/develoz/ci/templates/Rakefile.tt
259
+ - lib/generators/develoz/ci/templates/bin/ci.tt
260
+ - lib/generators/develoz/ci/templates/biome.json.tt
261
+ - lib/generators/develoz/ci/templates/config/ci.rb.tt
262
+ - lib/generators/develoz/concerns/concerns_generator.rb
263
+ - lib/generators/develoz/concerns/templates/app/models/concerns/configurable.rb.tt
264
+ - lib/generators/develoz/concerns/templates/app/models/concerns/optimized_finders.rb.tt
265
+ - lib/generators/develoz/concerns/templates/app/models/concerns/searchable_concern.rb.tt
266
+ - lib/generators/develoz/concerns/templates/app/models/concerns/transitionable.rb.tt
267
+ - lib/generators/develoz/concerns/templates/app/models/configuration.rb.tt
268
+ - lib/generators/develoz/concerns/templates/db/migrate/add_status_transitions.rb.tt
269
+ - lib/generators/develoz/concerns/templates/db/migrate/create_configurations.rb.tt
270
+ - lib/generators/develoz/concerns/templates/spec/models/concerns/configurable_spec.rb.tt
271
+ - lib/generators/develoz/concerns/templates/spec/models/concerns/optimized_finders_spec.rb.tt
272
+ - lib/generators/develoz/concerns/templates/spec/models/concerns/searchable_concern_spec.rb.tt
273
+ - lib/generators/develoz/concerns/templates/spec/models/concerns/transitionable_spec.rb.tt
274
+ - lib/generators/develoz/concerns/templates/spec/models/configuration_spec.rb.tt
275
+ - lib/generators/develoz/database/database_generator.rb
276
+ - lib/generators/develoz/database/templates/config/database.yml.tt
277
+ - lib/generators/develoz/database/templates/config/initializers/pg_search.rb.tt
278
+ - lib/generators/develoz/database/templates/db/migrate/create_pg_extensions.rb.tt
279
+ - lib/generators/develoz/db_backup/db_backup_generator.rb
280
+ - lib/generators/develoz/db_backup/templates/backup_rake.tt
281
+ - lib/generators/develoz/db_backup/templates/bin_db_backup.tt
282
+ - lib/generators/develoz/db_backup/templates/compose_service.tt
283
+ - lib/generators/develoz/doc_specs/doc_specs_generator.rb
284
+ - lib/generators/develoz/doc_specs/templates/bin/generate-docs.tt
285
+ - lib/generators/develoz/doc_specs/templates/lib/tasks/docs_check.rake.tt
286
+ - lib/generators/develoz/doc_specs/templates/spec/support/doc_screenshot_helper.rb.tt
287
+ - lib/generators/develoz/doc_specs/templates/spec/system/example_doc_spec.rb.tt
288
+ - lib/generators/develoz/docker/docker_generator.rb
289
+ - lib/generators/develoz/docker/templates/bin_dev.tt
290
+ - lib/generators/develoz/docker/templates/bin_docker_entrypoint.tt
291
+ - lib/generators/develoz/docker/templates/bin_run.tt
292
+ - lib/generators/develoz/docker/templates/bin_setup.tt
293
+ - lib/generators/develoz/docker/templates/docker-compose.yml.tt
294
+ - lib/generators/develoz/docker/templates/dockerfile_dev.tt
295
+ - lib/generators/develoz/docs_render/docs_render_generator.rb
296
+ - lib/generators/develoz/docs_render/templates/app/assets/stylesheets/documentation.scss.tt
297
+ - lib/generators/develoz/docs_render/templates/app/controllers/docs_controller.rb.tt
298
+ - lib/generators/develoz/docs_render/templates/app/javascript/docs.js.tt
299
+ - lib/generators/develoz/docs_render/templates/app/models/document.rb.tt
300
+ - lib/generators/develoz/docs_render/templates/app/views/docs/show.html.erb.tt
301
+ - lib/generators/develoz/docs_render/templates/config/initializers/redcarpet_rouge.rb.tt
302
+ - lib/generators/develoz/frontend_core/frontend_core_generator.rb
303
+ - lib/generators/develoz/frontend_core/templates/.annotaterb.yml.tt
304
+ - lib/generators/develoz/frontend_core/templates/config/importmap.rb.tt
305
+ - lib/generators/develoz/frontend_core/templates/config/initializers/pagy.rb.tt
306
+ - lib/generators/develoz/install/install_generator.rb
307
+ - lib/generators/develoz/kamal/kamal_generator.rb
308
+ - lib/generators/develoz/kamal/templates/accessories_postgres.yml.tt
309
+ - lib/generators/develoz/kamal/templates/deploy.yml.tt
310
+ - lib/generators/develoz/kamal/templates/dockerfile_prod.tt
311
+ - lib/generators/develoz/kamal/templates/kamal_secrets.tt
312
+ - lib/generators/develoz/maintenance/maintenance_generator.rb
313
+ - lib/generators/develoz/maintenance/templates/app/tasks/maintenance/example_task.rb.tt
314
+ - lib/generators/develoz/maintenance/templates/lib/tasks/maintenance_counters.rake.tt
315
+ - lib/generators/develoz/push/push_generator.rb
316
+ - lib/generators/develoz/push/templates/app/javascript/pwa/subscription.js.tt
317
+ - lib/generators/develoz/push/templates/app/models/push_subscription.rb.tt
318
+ - lib/generators/develoz/push/templates/app/services/push_notification_service.rb.tt
319
+ - lib/generators/develoz/push/templates/app/views/pwa/sw_push_handlers.js.tt
320
+ - lib/generators/develoz/push/templates/constants_env.tt
321
+ - lib/generators/develoz/push/templates/db/migrate/create_push_subscriptions.rb.tt
322
+ - lib/generators/develoz/pwa/pwa_generator.rb
323
+ - lib/generators/develoz/pwa/templates/app/controllers/pwa_controller.rb.tt
324
+ - lib/generators/develoz/pwa/templates/app/javascript/pwa/registration.js.tt
325
+ - lib/generators/develoz/pwa/templates/app/views/pwa/manifest.json.erb.tt
326
+ - lib/generators/develoz/pwa/templates/app/views/pwa/offline.html.erb.tt
327
+ - lib/generators/develoz/pwa/templates/app/views/pwa/service-worker.js.tt
328
+ - lib/generators/develoz/pwa/templates/routes.rb.tt
329
+ - lib/generators/develoz/solid/solid_generator.rb
330
+ - lib/generators/develoz/solid/templates/app/jobs/application_job.rb.tt
331
+ - lib/generators/develoz/solid/templates/config/cable.yml.tt
332
+ - lib/generators/develoz/solid/templates/config/cache.yml.tt
333
+ - lib/generators/develoz/solid/templates/config/initializers/mission_control.rb.tt
334
+ - lib/generators/develoz/solid/templates/config/initializers/solid.rb.tt
335
+ - lib/generators/develoz/solid/templates/config/queue.yml.tt
336
+ - lib/generators/develoz/solid/templates/config/recurring.yml.tt
337
+ - lib/generators/develoz/strict_loading/strict_loading_generator.rb
338
+ - lib/generators/develoz/strict_loading/templates/config/initializers/strict_loading.rb.tt
339
+ - lib/generators/develoz/testing/templates/rspec.tt
340
+ - lib/generators/develoz/testing/templates/rspec_parallel.tt
341
+ - lib/generators/develoz/testing/templates/spec/rails_helper.rb.tt
342
+ - lib/generators/develoz/testing/templates/spec/spec_helper.rb.tt
343
+ - lib/generators/develoz/testing/testing_generator.rb
344
+ - lib/generators/develoz/tooling/templates/constants.rb.tt
345
+ - lib/generators/develoz/tooling/templates/env.example.tt
346
+ - lib/generators/develoz/tooling/templates/vscode/extensions.json.tt
347
+ - lib/generators/develoz/tooling/templates/vscode/settings.json.tt
348
+ - lib/generators/develoz/tooling/templates/vscode/tasks.json.tt
349
+ - lib/generators/develoz/tooling/tooling_generator.rb
350
+ - lib/generators/develoz/ui/templates/bin/setup_develoz_ui.tt
351
+ - lib/generators/develoz/ui/ui_generator.rb
352
+ - lib/generators/develoz/versioning/templates/app/helpers/application_helper.rb.tt
353
+ - lib/generators/develoz/versioning/templates/app/views/shared/_app_version.html.erb.tt
354
+ - lib/generators/develoz/versioning/templates/spec/helpers/application_helper_spec.rb.tt
355
+ - lib/generators/develoz/versioning/versioning_generator.rb
356
+ - lib/tasks/canonical.rake
357
+ - templates/.keep
358
+ - templates/CANONICAL_SOURCES.md
359
+ - templates/pull_request_template.md.tt
360
+ homepage: https://github.com/develoz-com/rails-template
361
+ licenses: []
362
+ metadata:
363
+ homepage_uri: https://github.com/develoz-com/rails-template
364
+ source_code_uri: https://github.com/develoz-com/rails-template/tree/v0.1.0
365
+ changelog_uri: https://github.com/develoz-com/rails-template/blob/main/CHANGELOG.md
366
+ rdoc_options: []
367
+ require_paths:
368
+ - lib
369
+ required_ruby_version: !ruby/object:Gem::Requirement
370
+ requirements:
371
+ - - ">="
372
+ - !ruby/object:Gem::Version
373
+ version: '3.4'
374
+ required_rubygems_version: !ruby/object:Gem::Requirement
375
+ requirements:
376
+ - - ">="
377
+ - !ruby/object:Gem::Version
378
+ version: '0'
379
+ requirements: []
380
+ rubygems_version: 4.0.10
381
+ specification_version: 4
382
+ summary: Generate Rails 8.1 applications with Develoz conventions.
383
+ test_files: []