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

Rails7+Ruby3环境下Github Actions执行RSpec报错求助

Rails 7 + Ruby 3 + RSpec 的 Github Actions 配置示例

以下是经过验证的、适配 Rails 7 + Ruby 3 项目的 Github Actions 配置,专门针对 RSpec 测试场景优化,解决环境加载依赖、数据库初始化等常见问题:

name: RSpec Tests

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    env:
      RAILS_ENV: test
      DATABASE_URL: postgresql://postgres:postgres@localhost:5432/test_db
      RUBY_VERSION: 3.2.2 # 替换为你的项目实际使用的 Ruby 版本

    services:
      postgres:
        image: postgres:15 # 适配 Rails 7 的推荐 PostgreSQL 版本
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: test_db
        ports:
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ env.RUBY_VERSION }}
          bundler-cache: true # 自动缓存 Bundler 依赖,加速构建

      - name: Install system dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y postgresql-client libpq-dev nodejs npm

      - name: Install JavaScript dependencies
        run: npm install # Rails 7 默认用 jsbundling-rails 或 importmap,按需调整

      - name: Set up database
        run: |
          bundle exec rails db:create
          bundle exec rails db:schema:load # 用 schema 加载比迁移更快,适合 CI 环境

      - name: Precompile assets (按需启用)
        run: bundle exec rails assets:precompile
        if: ${{ env.RAILS_ENV == 'test' && exists('app/assets') }}

      - name: Run RSpec tests
        run: bundle exec rspec --format documentation

关键配置说明

  • 环境变量:明确指定 RAILS_ENV 为 test,配置 PostgreSQL 连接地址,避免环境加载歧义
  • 数据库服务:启动 PostgreSQL 服务并设置健康检查,确保数据库完全就绪后再执行后续步骤
  • 依赖缓存:启用 bundler-cache 减少重复安装依赖的时间,同时保证依赖版本一致
  • 数据库初始化:用 db:schema:load 替代 db:migrate,避免迁移历史不一致导致的问题
  • 资产预编译:按需启用,若你的测试涉及资产相关逻辑,需保留此步骤

常见问题排查

  • 若仍出现环境加载错误,检查项目根目录是否有 .env.test 文件,确保关键环境变量已正确配置
  • 确认 Gemfile 中包含 pg、rspec-rails 等必要依赖,且版本适配 Ruby 3 和 Rails 7
  • 检查测试代码中是否依赖本地特定环境变量,需在 Github Actions 的 env 块中补充定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:50:26