尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗To help people make and communicate automation decisions quickly and effectively.
Examples of automation decisions.
./go init
./go starthttp://localhost:3001/.RAILS_SERVER_PORT inside docker-compose.yml../go shell./go test./go lint./go help./go commands at the same time, cp docker-compose.local.example.yml docker-compose.local.yml in each; it drops the fixed db container name and host port 5434 that otherwise collide../go picks the file up automatically and it is gitignored.core-iacThis repo holds the Rails application code. The sibling core-iac repo holds the Infrastructure as Code (Terraform + Helm) that runs that code as the live site at automation-calculations.io.
The two repos meet at a Docker image on Docker Hub:
The Graphviz source is at docs/repo-relationship.dot; see the header of that file for the render command.
./go build prod produces a production image from Dockerfile.production. ./go push prod tags it as both :latest and a semver tag (e.g. 0.9.6-830) and pushes both to automationcalculationsci/automation-calculator on Docker Hub. CI (.circleci/config.yml) runs on an arm64 machine executor and, on main only, publishes with ./go push prod --multi-platform, so each tag is a multi-arch manifest (linux/amd64 + linux/arm64) that runs on either node architecture. The image repository name is defined in scripts/docker_hub.rb as the REPO constant.core-iac/helm/automation-calculator/ defines the Kubernetes resources (Deployment, Service, Ingress, ConfigMap, Secret). Its values.yaml points image.repository at the same Docker Hub repo above; the Terraform module core-iac/terraform/modules/aws/main_rails_app/ renders the chart with image.tag = var.app_version.core-iac/scripts/bump_app_docker_image_version.sh (or the _branch.sh variant) updates the app_version variable in the per-environment Terraform configs under core-iac/terraform/env/<env>/. A Terraform apply then triggers a new helm_release rollout, which causes Kubernetes to pull the new image tag.core-iac also provisions the VPC, EKS cluster, RDS PostgreSQL database, ALB ingress controller, and DNS — none of which live in this repo. The Rails app connects to the database via the DATABASE_URL secret rendered into the Helm release.| Concern | Repo |
|---|---|
| Rails app code, migrations, assets, tests | automation-calculator/ (this repo) |
| Dockerfiles for the app image | automation-calculator/ (this repo) |
| Helm chart describing the Kubernetes Deployment/Service/Ingress | core-iac/helm/automation-calculator/ |
Terraform for AWS (VPC, EKS, RDS, IAM) and the app's helm_release | core-iac/terraform/ |
| The image tag currently deployed to each environment | core-iac/terraform/env/<env>/ |
A change to a Ruby file → ship via this repo (build + push a new image, then bump app_version in core-iac). A change to how the app is deployed or to its surrounding cloud resources → ship via core-iac alone.
Inside this repo the Rails app exposes the same domain through two parallel stacks — an HTML interface with Devise session auth and a versioned JSON API with JWT auth — that share a single ActiveRecord domain. AutomationScenario belongs to a polymorphic owner (either a User or an anonymous Visitor), and the break-even math lives in the SolutionPair service.
The Graphviz source is at docs/app-structure.dot; render command is in the header.
Things worth knowing that the diagram does not spell out:
Visitable controller concern provides current_visitor / current_user_or_visitor so unauthenticated users can use the app immediately. A Visitor record (UUID + IP) is created on first visit and stored in session[:visitor_id]. Scenarios are not migrated to a User on signup.AutomationScenarioForGraphSerializer (including pre-computed intersection points) into a hidden #scenarioData element; automation_scenarios.coffee reads it on turbolinks:load and renders Plotly traces into #solutionsChart. The HTML page does not call the JSON API for chart data.SolutionPair#intersection_iteration solves (initial_cost₁ − initial_cost₂) / (iteration_cost₂ − iteration_cost₁), and Solution#cost_at(n) = initial_cost + iteration_cost * n is the linear cost line each pair intersects../go test, ./go shell or a similar command, you will see Could not find NEW_GEM_DEPENDENCY_NAME_HERE../go build to update your development docker image to include the new dependency../go start starts the development container, but it stops with exit code 1 after a few seconds. You check the logs and see a message like: A server is already running. Check /usr/src/app/tmp/pids/server.pid../go shell, cd /usr/src/app/tmp/pids, rm server.pid. Then exit the shell container and run ./go start again.ERROR: Service 'dev' failed to build: The command '/bin/sh -c useradd -ms /bin/bash $username' returned a non-zero code: 2 when running a command like ./go test or ./go start../go init before running any other ./go commands.