name: CI
on: [push, pull_request]
jobs:
  tests:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ruby: [ '2.7', '3.0', '3.1', '3.2', '3.3', '3.4', 'head', 'truffleruby' ]
        rails: [ '6.1', '7.0', '7.1', '8.0', 'main' ]
        exclude:
          - ruby: '2.7'
            rails: 'main'
          - ruby: '2.7'
            rails: '8.0'
          - ruby: '3.0'
            rails: '8.0'
          - ruby: '3.0'
            rails: 'main'
          - ruby: '3.1'
            rails: '8.0'
          - ruby: '3.1'
            rails: 'main'
          - ruby: '3.4'
            rails: '6.1'
          - ruby: '3.4'
            rails: '7.0'

    env:
      BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/rails_${{ matrix.rails }}.gemfile

    steps:
      - uses: actions/checkout@v4

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}
          bundler-cache: true

      - name: Run tests
        run: bundle exec rake test
        continue-on-error: ${{ matrix.ruby == 'head' || matrix.ruby == 'truffleruby' || matrix.rails == 'main' }}
        timeout-minutes: 3
