
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本文档详细说明HalalBooking项目的开发环境配置,包括依赖安装、项目初始化、代码构建、测试执行及服务器运行等关键流程,适用于开发人员搭建本地开发环境。
psql无法连接服务器,参考https://stackoverflow.com/a/31647044。ln -s ~/.rbenv/versions/3.1.2 ~/.rbenv/versions/3.1rvm alias create ruby-3.1.0 3.1.2若在集群模式下运行Puma服务器,Web工作进程可能因"Ethon"库问题崩溃,需禁用fork安全:
bashexport OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
建议在.pumaenv(Puma-dev)、~/.profile或等效文件中设置此环境变量,确保启动Puma前已导出。
bashmake setup
需获取生产环境数据库的"development"版本,执行:
bashmake fetchdb
该命令会自动获取数据库 dump 并恢复为halalbooking数据库。
通过以下make命令可从生产数据库获取样本数据(需SSH访问服务器,当前在oscar服务器执行):
make refreshdb:在服务器上创建新的dump文件(通过https://github.com/halalbooking/scripts/blob/master/misc/pgdump_halalbooking.sh),保存为`last.dump`,后续会被下载为本地`hb.dump`。make fetchdb:依次执行fetch-dump和restore-dump命令。make fetch-dump:从服务器下载last.dump至本地,保存为项目根目录的hb.dump。make restore-dump:从本地hb.dump恢复数据至本地数据库,应用本地变更后删除hb.dump。make refresh-and-fetchdb:依次执行refreshdb和fetchdb。bashlein fig
性能优化:若需使用合并文件(因性能原因),执行:
bashlein cljsbuild auto front-whitespace # 或 "extranet-whitespace",或两者都指定
该命令仍会监控文件变更。若只需构建一次:
bashlein cljsbuild once front-whitespace # 或 "extranet-whitespace",或两者都指定
清理输出目录:
bashlein clean
lein fig。/dev/cards。bashclj -M:dev
(start)。默认使用PGUSER和PGDATABASE环境变量定义连接。若未设置,将使用当前shell用户作为数据库用户(与psql行为一致),数据库名为"halalbooking"。
如需覆盖默认数据库名,可:
.bash_profile中通过export PGDATABASE=hb导出。PGDATABASE=hb clj -M:dev。默认情况下,Rails在开发环境中会 stub 所有Clojure支持的请求。需确保环境变量HANDLE_CLOJURE_REQUESTS=proxy已设置。
参考https://github.com/borkdude/clj-kondo/blob/master/doc/editor-integration.md配置实时 linting。
bashbin/rake spec:all
bashbin/rspec front/spec
基于CLJS的测试:
yarn。若只需运行一次:bashmake cljs-test-auto
bashmake cljs-test-once
基于Capybara的测试:
bashbrew install chromedriver # 首次安装 # 或升级:brew upgrade chromedriver
lein fig。部分测试需手动启动Clojure后端,注意使用测试环境和数据库(halalbooking_test),并使用自定义端口(8091,避免与开发服务器冲突):
bashenv HTTP_KIT__PORT=8091 PGDATABASE=halalbooking_test clojure -M:test -m hb.core
运行测试示例:
bashenv HTTP_KIT__PORT=8091 HANDLE_CLOJURE_REQUESTS=proxy rspec front/spec/features/search_filters_spec.rb
bashbin/rake db:test:prepare
make clj-test-automake clj-test-once准备工作: 安装Selenium:
bashnpm install -g selenium-standalone selenium-standalone install
运行测试:
.hermione.conf.js文件,配置测试环境为staging。lein fig。bashselenium-standalone start
bashyarn run screenshots
执行以下命令启动性能分析环境(本质为生产环境,代码变更后需重启):
bashRAILS_ENV=profiling bin/rails s
参考.circleci/README文件。
yarn run svg-sprite.svg前添加_(如circle_.svg)。CSS_LIVE_RELOAD=true,或启动服务器时指定:
bashCSS_LIVE_RELOAD=true rails s
yarn run watch-css。执行yarn run watch-css。
参考.browserlistrc文件。
rails s
启动Rails内置的Puma Web服务器:
bashrails s
puma-dev(替代rails s)
https://github.com/puma/puma-dev#puma-dev-a-fast-zero-config-development-server-for-os-x-and-linux是快速零配置的开发服务器,适用于OS X和Linux。
设置方法:
~/.puma-dev目录创建符号链接:
bashcd ~/.puma-dev && ln -s /path/to/halalbooking hb
~/.bash_profile中设置APP_HOST:
bashexport APP_HOST=hb.test
rails c:启动Rails控制台,用于与应用交互(代码变更后需重启)。默认所有任务存储在queue_classic_jobs表(使用https://github.com/QueueClassic/queue_classic/适配器),但不会自动执行。需并行启动QC worker处理任务(如发送邮件):
bashmake jobs
如需清除所有排队任务:
bashbin/rake qc:truncate
作业入队操作被 stub,可通过断言验证。
不运行https://github.com/halalbooking/halalbooking/wiki/Crontab-and-jobs-scheduling#staging。
任务存储在queue_classic_jobs表,由多个QC worker处理(参考https://github.com/halalbooking/halalbooking/pull/8446#issuecomment-514484405)。周期性任务通过https://github.com/halalbooking/halalbooking/wiki/Crontab-and-jobs-scheduling调度。
rails c:启动Rails控制台,用于命令行交互(代码变更后需重启)。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 halalbooking/ruby 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: