
halalbooking/primary本文档为Halalbooking项目的开发环境配置与使用指南,旨在帮助开发人员快速搭建本地开发环境、配置依赖、运行测试及管理后台任务。该项目基于Ruby on Rails、Clojure/ClojureScript构建,集成PostgreSQL数据库,支持多语言开发、自动化测试和后台任务处理,适用于旅游服务类应用的开发与维护。
oscar服务器)| 工具/库 | 版本要求 | 安装建议 |
|---|---|---|
| PostgreSQL | 13.x | 官方源安装,参考连接问题解决方案 |
| Ruby | .ruby-version指定(如3.1) | 通过rbenv或rvm安装,需创建版本别名(见下文) |
| Node.js | 14.x | 官方包管理器或nvm安装 |
| Yarn | 最新稳定版 | 参考yarn安装指南 |
| ImageMagick | 无特定版本 | 用于图片处理,系统包管理器安装(如brew install imagemagick) |
| Leiningen | 最新稳定版 | Clojure构建工具,参考安装指南 |
| Clojure CLI | 最新稳定版 | Clojure命令行工具,参考安装指南 |
若.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前生效。
bashmake setup # 执行项目初始化(依赖安装、配置生成等)
需获取生产环境"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访问权限。
bashlein fig # 启动热重载构建
若需使用合并文件模式(提升性能):
bash# 监听并自动构建(front-whitespace或extranet-whitespace目标) lein cljsbuild auto front-whitespace # 单次构建 lein cljsbuild once front-whitespace # 清理输出目录 lein clean
lein fig/dev/cards查看组件开发卡片bashclj -M:dev # 启动REPL (start) # 在REPL中执行以启动服务(默认端口8090)
http://localhost:8090验证服务。默认连接参数:
halalbooking(可通过PGDATABASE环境变量覆盖)自定义配置方式:
bash# 临时覆盖数据库名 PGDATABASE=hb clj -M:dev # 全局配置(添加至~/.bash_profile) export PGDATABASE=hb
Rails默认在开发环境中 stub 所有Clojure请求,需配置环境变量启用代理:
bashexport HANDLE_CLOJURE_REQUESTS=proxy # 添加至~/.profile或项目环境文件
使用clj-kondo进行Clojure代码静态检查,参考编辑器集成指南配置实时linting。
bashbin/rake spec:all # 运行所有测试 bin/rspec front/spec # 仅运行前端测试
bashyarn install # 首次运行需安装依赖 make cljs-test-auto # 持续运行测试(文件变更时自动触发) make cljs-test-once # 单次运行测试
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 # 文件变更时自动重跑测试
bashnpm install -g selenium-standalone # 安装Selenium selenium-standalone install # 安装浏览器驱动
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调度(参考任务调度文档)bashyarn 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服务生效
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务