You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Docker/docker-compose运行RoR应用RSpec时Puma启动但用例不执行

问题排查解决步骤

  • 修正命令拼写错误:你使用docker-compose执行测试的命令中,将rspec误写为rsepc,先修正拼写后重新执行测试。
  • 检查entrypoint.sh脚本逻辑:你配置的容器入口脚本如果末尾没有承接后续传入命令的逻辑,会直接忽略你附加的bundle exec rspec指令,执行默认的Puma启动命令。请在entrypoint.sh末尾添加exec "$@",示例完整结构:
#!/bin/sh
set -e

# 原有入口逻辑(如数据库初始化、缓存清理等)
# ...

# 新增:执行用户传入的命令
exec "$@"
  • 临时覆盖入口脚本验证:如果不想直接修改入口脚本,可以执行命令时添加--entrypoint=""参数跳过原有入口逻辑,直接执行测试:
# 仅使用Docker执行测试
docker container run --entrypoint="" simpleblogapp bundle exec rspec

# 使用docker-compose执行测试
docker-compose run --entrypoint="" -e "RAILS_ENV=test" simpleblogapp bundle exec rspec
  • 适配Fedora系统权限限制:Fedora默认开启SELinux会限制容器对宿主机文件的访问权限,你可以临时关闭SELinux验证:
sudo setenforce 0

如果验证后测试可正常执行,可在容器挂载卷配置末尾添加:z标签适配SELinux规则,避免关闭安全组件。

  • 检查Rails配置:确认config/environments/test.rb、config/puma.rb中无强制启动Puma服务的异常配置,本地可正常执行测试基本可排除该问题。

内容的提问来源于stack exchange,提问作者Rafael Viana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:54:02