name: build

on:
  push:
  pull_request:
  schedule:
    - cron: '22 22 * * *'

jobs:
  build:
    strategy:
      matrix:
        ruby_version: [ruby-head, '3.3', '3.2', '3.1', '3.0', '2.7', 'jruby']
        rails_version: [edge, '7.1', '7.0', '6.1', '6.0']

        include:
          - ruby_version: '2.6'
            rails_version: '6.1'
          - ruby_version: '2.6'
            rails_version: '6.0'
          - ruby_version: '2.6'
            rails_version: '5.2'
          - ruby_version: '2.6'
            rails_version: '5.1'
          - ruby_version: '2.6'
            rails_version: '5.0'

          - ruby_version: '2.5'
            rails_version: '6.1'
          - ruby_version: '2.5'
            rails_version: '5.2'

          - ruby_version: '2.4'
            rails_version: '5.2'

          - ruby_version: '2.3'
            rails_version: '5.2'

          - ruby_version: '2.2'
            rails_version: '4.2'
          - ruby_version: '2.2'
            rails_version: '4.1'

          - ruby_version: '2.1'
            rails_version: '4.2'

    runs-on: ubuntu-20.04

    env:
      RAILS_VERSION: ${{ matrix.rails_version }}

    steps:
      - uses: actions/checkout@v3

      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby_version }}
          rubygems: ${{ (matrix.ruby_version < '2.7' && 'default') || (matrix.ruby_version < '3' && '3.4.22') || 'latest' }}
          bundler-cache: true
        continue-on-error: ${{ (matrix.ruby_version == 'ruby-head') || (matrix.ruby_version == 'jruby') || (matrix.rails_version == 'edge') }}

      - run: bundle exec rake
        continue-on-error: ${{ (matrix.ruby_version == 'ruby-head') || (matrix.ruby_version == 'jruby') || (matrix.rails_version == 'edge') }}