菜单

本地开发设置

相关源文件

本文档提供了配置 Gumroad 应用程序本地开发环境的说明。它涵盖了运行应用程序所需的各项服务的安装和配置、环境变量以及 IDE 设置。

有关开发工具和编码标准的信息,请参阅开发工具和标准。有关跨环境配置管理,请参阅环境变量

目的与范围

本指南旨在建立本地开发环境,包括:

  • 数据库服务(MySQL、MongoDB、Redis、Elasticsearch)
  • 环境变量配置
  • IDE 设置和调试配置
  • 本地服务连接和端口分配

本地开发架构

下图展示了完整的本地开发堆栈以及服务如何连接

来源: .env.development1-36 .env.test1-28 .vscode/settings.json1-18 .vscode/launch.json1-14

所需服务和配置

数据库服务

应用程序需要以下四个主要的本地运行数据库服务

服务主机端口数据库名称目的
MySQL127.0.0.13306gumroad_development主应用程序数据库
MongoDBlocalhost27017gumroad_log_development应用程序日志
Elasticsearchlocalhost9200不适用搜索功能
Redislocalhost6379多个数据库(0-3)缓存和作业处理

来源: .env.development1-21

Redis 数据库分配

Redis 使用多个数据库索引来实现不同的目的

来源: .env.development18-21 .env.test17-20

环境配置

开发环境变量

开发环境通过.env.development1-36进行配置。主要配置部分包括:

数据库连接

  • 用于 MySQL 连接的 DATABASE_HOSTDATABASE_NAMEDATABASE_PORT
  • 用于 MongoDB 日志记录的 MONGO_DATABASE_URLMONGO_DATABASE_NAME
  • 用于搜索功能的 ELASTICSEARCH_HOST

应用程序设置

  • 用于 Rails 服务器配置的 PUMA_WORKER_PROCESSES=1RAILS_MAX_THREADS=5
  • 用于助手小部件服务的 HELPER_WIDGET_HOST="http://:3010"

安全配置

  • 用于身份验证的 DEVISE_SECRET_KEY
  • 用于加密的 STRONGBOX_GENERALSTRONGBOX_GENERAL_PASSWORD
  • 用于 ID 混淆的 OBFUSCATE_IDS_CIPHER_KEYOBFUSCATE_IDS_NUMERIC_CIPHER_KEY

来源: .env.development1-36

测试环境隔离

测试环境使用独立的数据库实例,以防止与开发数据发生干扰

服务开发数据库测试数据库隔离目的
MySQLgumroad_developmentgumroad_test分离应用程序数据
MongoDBgumroad_log_developmentgumroad_log_test分离日志数据
Redis数据库 0-3数据库 10-13分离缓存/作业数据

来源: .env.test1-20

IDE 配置

VS Code 设置

此存储库包含 VS Code 配置,以提供一致的开发体验

编辑器设置(.vscode/settings.json1-18

  • files.trimTrailingWhitespace: true - 自动清理尾随空格
  • files.insertFinalNewline: true - 确保文件以换行符结尾
  • editor.formatOnSave: true - 自动代码格式化
  • TypeScript/JavaScript 文件使用 Prettier 格式化程序 (esbenp.prettier-vscode)
  • 已启用 ESLint 格式化

调试配置(.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

服务依赖和启动

所需服务堆栈

环境变量加载优先级

应用程序按以下顺序加载配置

  1. 系统环境变量
  2. 开发模式下的 .env.development 文件
  3. 测试模式下的 .env.test 文件
  4. 默认值和所需密钥

关键配置要求

  • 所有数据库服务必须在 Rails 启动前运行
  • STRONGBOX_GENERALSTRONGBOX_GENERAL_PASSWORD 是加密所需
  • DEVISE_SECRET_KEY 是用户身份验证所需
  • 需要为文件操作配置 S3 凭据(S3_DELETER_ACCESS_KEY_IDS3_DELETER_SECRET_ACCESS_KEY

来源: .env.development23-33 .env.test22-28

本地开发检查清单

  1. 服务安装:确保 MySQL、MongoDB、Redis 和 Elasticsearch 已安装并正在运行
  2. 数据库创建:创建正确名称的开发和测试数据库
  3. 环境变量文件:复制并配置 .env.development 文件并填入适当的值
  4. IDE 设置:安装推荐的 VS Code 扩展(Prettier、ESLint、Ruby LSP)
  5. 端口可用性:验证端口 3000、3010、3306、6379、9200、27017 是否可用
  6. 密钥配置:设置加密密钥和身份验证密钥

来源: .env.development1-36 .env.test1-28 .vscode/settings.json1-18