本文档提供了配置 Gumroad 应用程序本地开发环境的说明。它涵盖了运行应用程序所需的各项服务的安装和配置、环境变量以及 IDE 设置。
有关开发工具和编码标准的信息,请参阅开发工具和标准。有关跨环境配置管理,请参阅环境变量。
本指南旨在建立本地开发环境,包括:
下图展示了完整的本地开发堆栈以及服务如何连接
来源: .env.development1-36 .env.test1-28 .vscode/settings.json1-18 .vscode/launch.json1-14
应用程序需要以下四个主要的本地运行数据库服务
| 服务 | 主机 | 端口 | 数据库名称 | 目的 |
|---|---|---|---|---|
| MySQL | 127.0.0.1 | 3306 | gumroad_development | 主应用程序数据库 |
| MongoDB | localhost | 27017 | gumroad_log_development | 应用程序日志 |
| Elasticsearch | localhost | 9200 | 不适用 | 搜索功能 |
| Redis | localhost | 6379 | 多个数据库(0-3) | 缓存和作业处理 |
Redis 使用多个数据库索引来实现不同的目的
来源: .env.development18-21 .env.test17-20
开发环境通过.env.development1-36进行配置。主要配置部分包括:
数据库连接
DATABASE_HOST、DATABASE_NAME、DATABASE_PORTMONGO_DATABASE_URL、MONGO_DATABASE_NAMEELASTICSEARCH_HOST应用程序设置
PUMA_WORKER_PROCESSES=1 和 RAILS_MAX_THREADS=5HELPER_WIDGET_HOST="http://:3010"安全配置
DEVISE_SECRET_KEYSTRONGBOX_GENERAL 和 STRONGBOX_GENERAL_PASSWORDOBFUSCATE_IDS_CIPHER_KEY 和 OBFUSCATE_IDS_NUMERIC_CIPHER_KEY测试环境使用独立的数据库实例,以防止与开发数据发生干扰
| 服务 | 开发数据库 | 测试数据库 | 隔离目的 |
|---|---|---|---|
| MySQL | gumroad_development | gumroad_test | 分离应用程序数据 |
| MongoDB | gumroad_log_development | gumroad_log_test | 分离日志数据 |
| Redis | 数据库 0-3 | 数据库 10-13 | 分离缓存/作业数据 |
来源: .env.test1-20
此存储库包含 VS Code 配置,以提供一致的开发体验
编辑器设置(.vscode/settings.json1-18)
files.trimTrailingWhitespace: true - 自动清理尾随空格files.insertFinalNewline: true - 确保文件以换行符结尾editor.formatOnSave: true - 自动代码格式化esbenp.prettier-vscode)调试配置(.vscode/launch.json1-14)
ruby_lsp 调试器的 Rails 服务器启动配置0.0.0.0:3000 以供外部访问${workspaceRoot}/bin/rails s -b 0.0.0.0 -p 3000来源: .vscode/settings.json1-18 .vscode/launch.json1-14
应用程序按以下顺序加载配置
.env.development 文件.env.test 文件关键配置要求
STRONGBOX_GENERAL 和 STRONGBOX_GENERAL_PASSWORD 是加密所需DEVISE_SECRET_KEY 是用户身份验证所需S3_DELETER_ACCESS_KEY_ID、S3_DELETER_SECRET_ACCESS_KEY)来源: .env.development23-33 .env.test22-28
.env.development 文件并填入适当的值来源: .env.development1-36 .env.test1-28 .vscode/settings.json1-18