
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本文档为Halalbooking项目的开发环境配置与使用指南,旨在帮助开发人员快速搭建本地开发环境、配置依赖、运行测试及管理后台任务。该项目基于Ruby on Rails、Clojure/ClojureScript构建,集成PostgreSQL数据库,支持多语言开发、自动化测试和后台任务处理,适用于旅游服务类应用的开发与维护。
oscar服务器)| 工具/库 | 版本要求 | 安装建议 |
|---|---|---|
| PostgreSQL | 13.x | 官方源安装,参考https://stackoverflow.com/a/31647044 |
| Ruby | .ruby-version指定(如3.1) | 通过rbenv或rvm安装,需创建版本别名(见下文) |
| Node.js | 14.x | 官方包管理器或nvm安装 |
| Yarn | 最新稳定版 | 参考https://yarnpkg.com/en/docs/install |
| ImageMagick | 无特定版本 | 用于图片处理,系统包管理器安装(如brew install imagemagick) |
| Leiningen | 最新稳定版 | Clojure构建工具,参考http://leiningen.org/#install |
| Clojure CLI | 最新稳定版 | Clojure命令行工具,参考https://clojure.org/guides/getting_started#_clojure_installer_and_cli_tools |
若.ruby-version文件中指定主版本(如3.1),需为本地安装的具体版本(如3.1.2)创建别名:
ln -s ~/.rbenv/versions/3.1.2 ~/.rbenv/versions/3.1rvm alias create ruby-3.1.0 3.1.2在Puma集群模式下,Web Worker可能因Ethon库问题崩溃,需禁用fork安全检查:
bashexport OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
建议将该变量添加至.pumaenv(Puma-dev)、~/.profile或等效环境配置文件中,确保启动Puma前生效。
5.1.1 基础环境搭建
bashmake setup # 执行项目初始化(依赖安装、配置生成等)
5.1.2 数据库初始化
需获取生产环境"development"版本数据库 dump 并恢复:
bashmake fetchdb # 自动拉取生产数据库dump并恢复为本地`halalbooking`数据库
通过以下make命令可管理本地数据库样本数据(需SSH访问服务器):
make refreshdb:在服务器生成新dump文件(保存为last.dump),并同步至本地hb.dumpmake fetch-dump:仅下载服务器last.dump至本地hb.dump(仓库根目录)make restore-dump:从本地hb.dump恢复数据至数据库,并应用本地变更后删除dump文件make refresh-and-fetchdb:依次执行refreshdb和fetchdb当前数据库操作服务器为oscar,需确保SSH访问权限。
5.2.1 开发环境设置
bashlein fig # 启动热重载构建
5.2.2 性能优化配置
若需使用合并文件模式(提升性能):
bash# 监听并自动构建(front-whitespace或extranet-whitespace目标) lein cljsbuild auto front-whitespace # 单次构建 lein cljsbuild once front-whitespace # 清理输出目录 lein clean
5.2.3 Devcards配置
lein fig/dev/cards查看组件开发卡片5.3.1 开发环境启动
bashclj -M:dev # 启动REPL (start) # 在REPL中执行以启动服务(默认端口8090)
http://localhost:8090验证服务。5.3.2 数据库连接配置
默认连接参数:
halalbooking(可通过PGDATABASE环境变量覆盖)自定义配置方式:
bash# 临时覆盖数据库名 PGDATABASE=hb clj -M:dev # 全局配置(添加至~/.bash_profile) export PGDATABASE=hb
5.3.3 Rails与Clojure集成
Rails默认在开发环境中 stub 所有Clojure请求,需配置环境变量启用代理:
bashexport HANDLE_CLOJURE_REQUESTS=proxy # 添加至~/.profile或项目环境文件
5.3.4 代码Linting
使用clj-kondo进行Clojure代码静态检查,参考https://github.com/borkdude/clj-kondo/blob/master/doc/editor-integration.md%E9%85%8D%E7%BD%AE%E5%AE%9E%E6%97%B6linting%E3%80%82
bashbin/rake spec:all # 运行所有测试 bin/rspec front/spec # 仅运行前端测试
6.2.1 基于CLJS的测试
bashyarn install # 首次运行需安装依赖 make cljs-test-auto # 持续运行测试(文件变更时自动触发) make cljs-test-once # 单次运行测试
6.2.2 Capybara特性测试
bashbrew install chromedriver # macOS,首次安装 brew upgrade chromedriver # 升级现有版本
lein fig(保持运行)bin/rspec spec/features)bashbin/rake db:test:prepare # 初始化测试数据库
bashmake clj-test-once # 单次运行测试 make clj-test-auto # 文件变更时自动重跑测试
6.4.1 环境准备
bashnpm install -g selenium-standalone # 安装Selenium selenium-standalone install # 安装浏览器驱动
6.4.2 执行测试
bashrails s # 启动Rails服务器 lein fig # 启动CLJS构建 selenium-standalone start # 启动Selenium
bashyarn run screenshots # 默认测试本地环境;修改.hermione.conf.js可测试staging环境
默认任务存储于queue_classic_jobs表(QC适配器),但需手动启动worker处理:
bashmake jobs # 启动QC worker处理后台任务(如邮件发送)
清理积压任务:
bashbin/rake qc:truncate # 清空任务队列
任务入队操作被stub,可通过Rails测试框架断言任务是否入队(参考Rails任务测试指南)。
queue_classic_jobs表任务,周期性任务通过cron调度(参考https://github.com/halalbooking/halalbooking/wiki/Crontab-and-jobs-scheduling%EF%BC%89bashyarn run svg-sprite # 更新SVG精灵图
排除文件:文件名以_前缀+.svg(如circle_.svg)将不纳入精灵图。
bash# 方式1:临时启用 CSS_LIVE_RELOAD=true rails s # 方式2:添加至环境变量(如~/.profile) export CSS_LIVE_RELOAD=true # 启动CSS监听 yarn run watch-css # 实时监控CSS变更并重建
通过profiling环境(类生产配置)运行服务:
bashRAILS_ENV=profiling bin/rails s # 注意:代码变更后需重启服务
以下为基于项目技术栈的开发环境Docker Compose配置示例(docker-compose.yml):
yamlversion: '3.8' services: postgres: image: postgres:13 environment: POSTGRES_USER: ${USER} POSTGRES_DB: halalbooking volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" rails: build: . command: rails s -b 0.0.0.0 volumes: - .:/app - bundle_data:/usr/local/bundle ports: - "3000:3000" environment: - HANDLE_CLOJURE_REQUESTS=proxy - OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES # macOS仅需 - DATABASE_URL=postgres://${USER}@postgres:5432/halalbooking depends_on: - postgres - clojure clojure: build: . command: clj -M:dev volumes: - .:/app ports: - "8090:8090" environment: - PGDATABASE=halalbooking - PGUSER=${USER} - PGHOST=postgres depends_on: - postgres volumes: postgres_data: bundle_data:
使用说明:
Dockerfile(基于Ruby+JDK镜像,安装Node.js、Leiningen等依赖)docker-compose up -ddocker-compose exec rails make fetchdb| 环境变量 | 作用 | 适用场景 | 默认值 |
|---|---|---|---|
OBJC_DISABLE_INITIALIZE_FORK_SAFETY | 禁用macOS fork安全检查(解决Puma集群崩溃) | macOS + Puma集群模式 | 未设置(需手动export) |
HANDLE_CLOJURE_REQUESTS | 控制Rails对Clojure请求的处理方式 | 开发环境 | stub(需设为proxy) |
PGDATABASE | 自定义PostgreSQL数据库名 | Clojure/Rails数据库连接 | halalbooking |
CSS_LIVE_RELOAD | 启用CSS热重载功能 | 开发环境 | false |
RAILS_ENV | Rails环境(development/test/production) | 性能分析 | development |
详见项目根目录.browserlistrc文件,包含目标浏览器版本范围(如Chrome 80+、Firefox 75+等)。
问题:Puma集群模式下Web Worker因Ethon库问题崩溃。
解决方案:启动Puma前导出环境变量:
bashexport OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES # 添加至~/.profile或.pumaenv
问题:clj -M:dev或rails c无法连接数据库。
排查:
pg_isreadypsql -d halalbookingPGDATABASE=hb PGUSER=myuser clj -M:dev问题:Rails返回404而非代理至Clojure服务。
解决方案:确保环境变量配置:
bashexport HANDLE_CLOJURE_REQUESTS=proxy # 重启Rails服务生效
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务