heroku_san环境变量实战:config:vars、RACK_ENV与独立配置仓库完整攻略 heroku_san环境变量实战config:vars、RACK_ENV与独立配置仓库完整攻略【免费下载链接】heroku_sanHelpful stuffs for Heroku.项目地址: https://gitcode.com/gh_mirrors/he/heroku_sanheroku_san 是一款为 Heroku 量身打造的 Ruby 部署辅助工具它把创建应用、推送环境变量config:vars、校准 RACK_ENV、数据库迁移等日常运维操作全部封装成简单易用的 rake 命令。本文面向新手带你完整掌握 heroku_san 的环境变量管理编写配置文件、一键推送 config:vars、自动配置 RACK_ENV以及用独立配置仓库安全托管敏感信息。一、为什么用 heroku_san 管理 Heroku 环境变量用官方命令行管理多台应用的环境变量需要反复切换--app参数既繁琐又容易配错。heroku_san 解决了三个痛点一个文件管所有环境config/heroku.yml统一定义 production、staging、demo 各环境的变量一条命令推全部rake all heroku:config即可把变量同步到所有已配置的应用敏感配置不落地密钥类配置可以放进权限更严格的独立配置仓库所有heroku:config系列任务都定义在 lib/heroku_san/tasks.rb想深入理解行为时直接看源码即可。二、快速上手3 步生成你的 heroku.yml 配置文件1. 安装 gem在Gemfile中声明仅开发环境需要group :development do gem heroku_san end2. 生成示例配置文件# Rails 3 项目 rails generate heroku_san # 其他项目 rake heroku:create_config命令会把官方示例模板 lib/templates/heroku.example.yml 复制到config/heroku.yml。配置文件格式长这样production: app: awesomeapp # 对应的 Heroku 应用名 stack: cedar # 可选运行栈 tag: production/* # 可选发布时推送的 git tag 模式 config: BUNDLE_WITHOUT: development:test GOOGLE_ANALYTICS: UA-12345678-1 staging: app: awesomeapp-staging config: default BUNDLE_WITHOUT: development:test demo: app: awesomeapp-demo config: *default # YAML 锚点复用避免重复书写 两个小技巧config:下的键值对就是最终写入 Heroku 的config:vars配置文件支持ERB 模板语法可以用% %插入动态值见 lib/heroku_san/parser.rb。三、config:vars 实战把环境变量推送到 Herokuheroku_san 为环境变量提供了「推送 / 查线上 / 本地预览」三件套。heroku:config —— 一键推送全部变量# 只推送到 production rake production heroku:config # 一次性推送到所有已配置的应用 rake all heroku:config执行时 Stage#push_config 会调用 Heroku API 将config:下每个键值对写入应用并逐条打印KEY: value推送了什么一目了然。heroku:config:list —— 查看线上已生效的变量rake production heroku:config:list它直接从 Heroku 远端读取真实值是排查本地配置和线上不一致问题的第一选择。heroku:config:list:local —— 推送前先预览rake all heroku:config:list:local只读取本地heroku.yml含独立配置仓库见下文完全不触碰线上适合推送前做最后核对。四、RACK_ENV 自动配置让每个环境认识自己为什么 RACK_ENV 这么重要Rails / Sinatra 应用靠RACK_ENV判断自己运行在哪个环境加载哪个数据库、日志详细程度、静态资源是否压缩全由它决定。如果 staging 应用错配成production轻则配置错乱重则误操作生产库。一条命令搞定 RACK_ENVrake all heroku:config:rack_env这条命令源码lib/heroku_san/tasks.rb也可简写为heroku:rack_env会逐个应用做三件事读取该应用当前的环境变量检查RACK_ENV是否等于环境名stage 名如staging不一致时自动推送修正例如RACK_ENV: staging。也就是说RACK_ENV 以heroku.yml中的 stage 名为准——把环境命名为productionRACK_ENV 就自动对齐无需手工逐个应用设置。五、独立配置仓库用 config_repo 安全托管敏感信息为什么要单独建一个配置仓库数据库密码、API 密钥写进代码仓库等于把钥匙挂在门上。heroku_san 支持把配置放到一个权限更严格的独立 Git 仓库config_repo中开发代码仓库保持干净密钥仓库只授权给运维同事。相关自动化测试可参考 features/extended-config.feature。配置步骤第 1 步新建一个只含config.yml的 Git 仓库# 独立配置仓库根目录下的 config.yml production: DATABASE_URL: postgres://user:passhost/db SECRET_TOKEN: abc123 staging: DATABASE_URL: postgres://staging_userhost/staging_db第 2 步在config/heroku.yml顶部声明仓库地址config_repo: gityour-git-server.com:ops/heroku-config.git production: app: awesomeapp staging: app: awesomeapp-staging第 3 步照常执行rake all heroku:config一切自动完成。本地与远程配置如何合并每次执行任务时Parser#merge_external_config! 会把配置仓库临时 clone 到内存目录读取其中的config.yml再按 stage 名与本地配置合并。规则很简单本地有、远程没有 → 保留本地远程有、本地没有 → 追加远程两边都有 →远程优先覆盖本地合并动作在 lib/heroku_san/project.rb 的each_app中触发所以heroku:config、heroku:config:list:local等所有任务都会自动享受远程配置。六、环境变量管理常用命令速查表需求命令生成示例配置文件rake heroku:create_config推送变量到指定应用rake production heroku:config推送变量到所有应用rake all heroku:config校准所有应用的 RACK_ENVrake all heroku:config:rack_env查看线上已生效变量rake production heroku:config:list本地预览变量不触碰线上rake all heroku:config:list:local七、写在最后heroku_san 把创建应用 → 配置环境变量 → 部署这条链路压缩成几个 rake 命令。建议按本文顺序操作先用heroku:create_config搭好配置文件骨架再用heroku:config:list:local预览、heroku:config推送最后用heroku:config:rack_env校准环境标识。更完整的任务清单与项目说明见 README.md。【免费下载链接】heroku_sanHelpful stuffs for Heroku.项目地址: https://gitcode.com/gh_mirrors/he/heroku_san创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考