kettle-dev 1.1.31 → 1.1.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/FUNDING.yml.no-osc.example +13 -0
- data/.github/workflows/codeql-analysis.yml +3 -3
- data/.github/workflows/current.yml +8 -8
- data/.github/workflows/current.yml.example +8 -8
- data/.github/workflows/dep-heads.yml +8 -8
- data/.github/workflows/heads.yml +8 -8
- data/.github/workflows/heads.yml.example +8 -8
- data/.github/workflows/truffle.yml +8 -8
- data/.tool-versions +1 -1
- data/Appraisal.root.gemfile +1 -3
- data/CHANGELOG.md +44 -1
- data/CONTRIBUTING.md +3 -3
- data/FUNDING.md.no-osc.example +66 -0
- data/Gemfile +2 -2
- data/Gemfile.example +2 -2
- data/README.md +18 -4
- data/README.md.example +18 -4
- data/README.md.no-osc.example +521 -0
- data/Rakefile.example +1 -1
- data/gemfiles/modular/erb/r2.3/default.gemfile +1 -1
- data/gemfiles/modular/injected.gemfile +2 -2
- data/gemfiles/modular/optional.gemfile.example +4 -0
- data/gemfiles/modular/style.gemfile +1 -1
- data/kettle-dev.gemspec.example +2 -2
- data/lib/kettle/dev/gem_spec_reader.rb +20 -19
- data/lib/kettle/dev/tasks/template_task.rb +14 -2
- data/lib/kettle/dev/template_helpers.rb +45 -0
- data/lib/kettle/dev/version.rb +1 -1
- data/lib/kettle/dev.rb +5 -0
- data/sig/kettle/dev.rbs +1 -0
- data.tar.gz.sig +0 -0
- metadata +9 -4
- metadata.gz.sig +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 75a1e2bd3427f4cb693a7c57c69e733c6ac5e92df56aeba02ad85fcbb8eaf677
         | 
| 4 | 
            +
              data.tar.gz: 4fda8487beb40b94941c32a18066ffc3f995c2cef351e9b289f91d6098213253
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 3c80c576bbf97d1e25d21b8e4d28d3ef09dd3ca1e13912105e81d73c4682dedd83492df7eccbe10b730cc40b237f1e154709b4fe45de2450723aa129567d981c
         | 
| 7 | 
            +
              data.tar.gz: 272a2cce9ed40731e78eb0f09a600072c0430c088a836ec6d297e67b43f6b3cde09ad5ee1c9c603c75231320e764c87ecdc915da60fcb950d22f6c22590f7708
         | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | Binary file | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            # These are supported funding model platforms
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            buy_me_a_coffee: pboling
         | 
| 4 | 
            +
            community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
         | 
| 5 | 
            +
            github: [pboling] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
         | 
| 6 | 
            +
            issuehunt: pboling # Replace with a single IssueHunt username
         | 
| 7 | 
            +
            ko_fi: pboling # Replace with a single Ko-fi username
         | 
| 8 | 
            +
            liberapay: pboling # Replace with a single Liberapay username
         | 
| 9 | 
            +
            open_collective: # Replace with a single Open Collective slug e.g., orgs/cloud-foundry
         | 
| 10 | 
            +
            patreon: galtzo # Replace with a single Patreon username
         | 
| 11 | 
            +
            polar: pboling
         | 
| 12 | 
            +
            thanks_dev: u/gh/pboling
         | 
| 13 | 
            +
            tidelift: rubygems/kettle-dev
         | 
| @@ -42,7 +42,7 @@ jobs: | |
| 42 42 |  | 
| 43 43 | 
             
                # Initializes the CodeQL tools for scanning.
         | 
| 44 44 | 
             
                - name: Initialize CodeQL
         | 
| 45 | 
            -
                  uses: github/codeql-action/init@ | 
| 45 | 
            +
                  uses: github/codeql-action/init@v4
         | 
| 46 46 | 
             
                  with:
         | 
| 47 47 | 
             
                    languages: ${{ matrix.language }}
         | 
| 48 48 | 
             
                    # If you wish to specify custom queries, you can do so here or in a config file.
         | 
| @@ -53,7 +53,7 @@ jobs: | |
| 53 53 | 
             
                # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
         | 
| 54 54 | 
             
                # If this step fails, then you should remove it and run the build manually (see below)
         | 
| 55 55 | 
             
                - name: Autobuild
         | 
| 56 | 
            -
                  uses: github/codeql-action/autobuild@ | 
| 56 | 
            +
                  uses: github/codeql-action/autobuild@v4
         | 
| 57 57 |  | 
| 58 58 | 
             
                # ℹ️ Command-line programs to run using the OS shell.
         | 
| 59 59 | 
             
                # 📚 https://git.io/JvXDl
         | 
| @@ -67,4 +67,4 @@ jobs: | |
| 67 67 | 
             
                #   make release
         | 
| 68 68 |  | 
| 69 69 | 
             
                - name: Perform CodeQL Analysis
         | 
| 70 | 
            -
                  uses: github/codeql-action/analyze@ | 
| 70 | 
            +
                  uses: github/codeql-action/analyze@v4
         | 
| @@ -64,11 +64,11 @@ jobs: | |
| 64 64 |  | 
| 65 65 | 
             
                steps:
         | 
| 66 66 | 
             
                  - name: Checkout
         | 
| 67 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 67 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 68 68 | 
             
                    uses: actions/checkout@v5
         | 
| 69 69 |  | 
| 70 70 | 
             
                  - name: Setup Ruby & RubyGems
         | 
| 71 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 71 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 72 72 | 
             
                    uses: ruby/setup-ruby@v1
         | 
| 73 73 | 
             
                    with:
         | 
| 74 74 | 
             
                      ruby-version: ${{ matrix.ruby }}
         | 
| @@ -80,12 +80,12 @@ jobs: | |
| 80 80 | 
             
                  # We need to do this first to get appraisal installed.
         | 
| 81 81 | 
             
                  # NOTE: This does not use the primary Gemfile at all.
         | 
| 82 82 | 
             
                  - name: Install Root Appraisal
         | 
| 83 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 83 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 84 84 | 
             
                    run: bundle
         | 
| 85 85 |  | 
| 86 86 | 
             
                  - name: "[Attempt 1] Install Root Appraisal"
         | 
| 87 87 | 
             
                    id: bundleAttempt1
         | 
| 88 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 88 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 89 89 | 
             
                    run: bundle
         | 
| 90 90 | 
             
                    # Continue to the next step on failure
         | 
| 91 91 | 
             
                    continue-on-error: true
         | 
| @@ -94,12 +94,12 @@ jobs: | |
| 94 94 | 
             
                  - name: "[Attempt 2] Install Root Appraisal"
         | 
| 95 95 | 
             
                    id: bundleAttempt2
         | 
| 96 96 | 
             
                    # If bundleAttempt1 failed, try again here; Otherwise skip.
         | 
| 97 | 
            -
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 97 | 
            +
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 98 98 | 
             
                    run: bundle
         | 
| 99 99 |  | 
| 100 100 | 
             
                  - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 101 101 | 
             
                    id: bundleAppraisalAttempt1
         | 
| 102 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 102 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 103 103 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 104 104 | 
             
                    # Continue to the next step on failure
         | 
| 105 105 | 
             
                    continue-on-error: true
         | 
| @@ -108,9 +108,9 @@ jobs: | |
| 108 108 | 
             
                  - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 109 109 | 
             
                    id: bundleAppraisalAttempt2
         | 
| 110 110 | 
             
                    # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
         | 
| 111 | 
            -
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 111 | 
            +
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 112 112 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 113 113 |  | 
| 114 114 | 
             
                  - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
         | 
| 115 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 115 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 116 116 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
         | 
| @@ -63,11 +63,11 @@ jobs: | |
| 63 63 |  | 
| 64 64 | 
             
                steps:
         | 
| 65 65 | 
             
                  - name: Checkout
         | 
| 66 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 66 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 67 67 | 
             
                    uses: actions/checkout@v5
         | 
| 68 68 |  | 
| 69 69 | 
             
                  - name: Setup Ruby & RubyGems
         | 
| 70 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 70 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 71 71 | 
             
                    uses: ruby/setup-ruby@v1
         | 
| 72 72 | 
             
                    with:
         | 
| 73 73 | 
             
                      ruby-version: ${{ matrix.ruby }}
         | 
| @@ -79,12 +79,12 @@ jobs: | |
| 79 79 | 
             
                  # We need to do this first to get appraisal installed.
         | 
| 80 80 | 
             
                  # NOTE: This does not use the primary Gemfile at all.
         | 
| 81 81 | 
             
                  - name: Install Root Appraisal
         | 
| 82 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 82 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 83 83 | 
             
                    run: bundle
         | 
| 84 84 |  | 
| 85 85 | 
             
                  - name: "[Attempt 1] Install Root Appraisal"
         | 
| 86 86 | 
             
                    id: bundleAttempt1
         | 
| 87 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 87 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 88 88 | 
             
                    run: bundle
         | 
| 89 89 | 
             
                    # Continue to the next step on failure
         | 
| 90 90 | 
             
                    continue-on-error: true
         | 
| @@ -93,12 +93,12 @@ jobs: | |
| 93 93 | 
             
                  - name: "[Attempt 2] Install Root Appraisal"
         | 
| 94 94 | 
             
                    id: bundleAttempt2
         | 
| 95 95 | 
             
                    # If bundleAttempt1 failed, try again here; Otherwise skip.
         | 
| 96 | 
            -
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 96 | 
            +
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 97 97 | 
             
                    run: bundle
         | 
| 98 98 |  | 
| 99 99 | 
             
                  - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 100 100 | 
             
                    id: bundleAppraisalAttempt1
         | 
| 101 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 101 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 102 102 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 103 103 | 
             
                    # Continue to the next step on failure
         | 
| 104 104 | 
             
                    continue-on-error: true
         | 
| @@ -107,9 +107,9 @@ jobs: | |
| 107 107 | 
             
                  - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 108 108 | 
             
                    id: bundleAppraisalAttempt2
         | 
| 109 109 | 
             
                    # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
         | 
| 110 | 
            -
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 110 | 
            +
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 111 111 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 112 112 |  | 
| 113 113 | 
             
                  - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
         | 
| 114 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 114 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 115 115 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
         | 
| @@ -67,11 +67,11 @@ jobs: | |
| 67 67 |  | 
| 68 68 | 
             
                steps:
         | 
| 69 69 | 
             
                  - name: Checkout
         | 
| 70 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 70 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 71 71 | 
             
                    uses: actions/checkout@v5
         | 
| 72 72 |  | 
| 73 73 | 
             
                  - name: Setup Ruby & RubyGems
         | 
| 74 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 74 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 75 75 | 
             
                    uses: ruby/setup-ruby@v1
         | 
| 76 76 | 
             
                    with:
         | 
| 77 77 | 
             
                      ruby-version: ${{ matrix.ruby }}
         | 
| @@ -83,12 +83,12 @@ jobs: | |
| 83 83 | 
             
                  # We need to do this first to get appraisal installed.
         | 
| 84 84 | 
             
                  # NOTE: This does not use the primary Gemfile at all.
         | 
| 85 85 | 
             
                  - name: Install Root Appraisal
         | 
| 86 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 86 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 87 87 | 
             
                    run: bundle
         | 
| 88 88 |  | 
| 89 89 | 
             
                  - name: "[Attempt 1] Install Root Appraisal"
         | 
| 90 90 | 
             
                    id: bundleAttempt1
         | 
| 91 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 91 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 92 92 | 
             
                    run: bundle
         | 
| 93 93 | 
             
                    # Continue to the next step on failure
         | 
| 94 94 | 
             
                    continue-on-error: true
         | 
| @@ -97,12 +97,12 @@ jobs: | |
| 97 97 | 
             
                  - name: "[Attempt 2] Install Root Appraisal"
         | 
| 98 98 | 
             
                    id: bundleAttempt2
         | 
| 99 99 | 
             
                    # If bundleAttempt1 failed, try again here; Otherwise skip.
         | 
| 100 | 
            -
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 100 | 
            +
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 101 101 | 
             
                    run: bundle
         | 
| 102 102 |  | 
| 103 103 | 
             
                  - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 104 104 | 
             
                    id: bundleAppraisalAttempt1
         | 
| 105 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 105 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 106 106 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 107 107 | 
             
                    # Continue to the next step on failure
         | 
| 108 108 | 
             
                    continue-on-error: true
         | 
| @@ -111,9 +111,9 @@ jobs: | |
| 111 111 | 
             
                  - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 112 112 | 
             
                    id: bundleAppraisalAttempt2
         | 
| 113 113 | 
             
                    # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
         | 
| 114 | 
            -
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 114 | 
            +
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 115 115 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 116 116 |  | 
| 117 117 | 
             
                  - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
         | 
| 118 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 118 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 119 119 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
         | 
    
        data/.github/workflows/heads.yml
    CHANGED
    
    | @@ -65,11 +65,11 @@ jobs: | |
| 65 65 |  | 
| 66 66 | 
             
                steps:
         | 
| 67 67 | 
             
                  - name: Checkout
         | 
| 68 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 68 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 69 69 | 
             
                    uses: actions/checkout@v5
         | 
| 70 70 |  | 
| 71 71 | 
             
                  - name: Setup Ruby & RubyGems
         | 
| 72 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 72 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 73 73 | 
             
                    uses: ruby/setup-ruby@v1
         | 
| 74 74 | 
             
                    with:
         | 
| 75 75 | 
             
                      ruby-version: ${{ matrix.ruby }}
         | 
| @@ -81,12 +81,12 @@ jobs: | |
| 81 81 | 
             
                  # We need to do this first to get appraisal installed.
         | 
| 82 82 | 
             
                  # NOTE: This does not use the primary Gemfile at all.
         | 
| 83 83 | 
             
                  - name: Install Root Appraisal
         | 
| 84 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 84 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 85 85 | 
             
                    run: bundle
         | 
| 86 86 |  | 
| 87 87 | 
             
                  - name: "[Attempt 1] Install Root Appraisal"
         | 
| 88 88 | 
             
                    id: bundleAttempt1
         | 
| 89 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 89 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 90 90 | 
             
                    run: bundle
         | 
| 91 91 | 
             
                    # Continue to the next step on failure
         | 
| 92 92 | 
             
                    continue-on-error: true
         | 
| @@ -95,12 +95,12 @@ jobs: | |
| 95 95 | 
             
                  - name: "[Attempt 2] Install Root Appraisal"
         | 
| 96 96 | 
             
                    id: bundleAttempt2
         | 
| 97 97 | 
             
                    # If bundleAttempt1 failed, try again here; Otherwise skip.
         | 
| 98 | 
            -
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 98 | 
            +
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 99 99 | 
             
                    run: bundle
         | 
| 100 100 |  | 
| 101 101 | 
             
                  - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 102 102 | 
             
                    id: bundleAppraisalAttempt1
         | 
| 103 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 103 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 104 104 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 105 105 | 
             
                    # Continue to the next step on failure
         | 
| 106 106 | 
             
                    continue-on-error: true
         | 
| @@ -109,9 +109,9 @@ jobs: | |
| 109 109 | 
             
                  - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 110 110 | 
             
                    id: bundleAppraisalAttempt2
         | 
| 111 111 | 
             
                    # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
         | 
| 112 | 
            -
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 112 | 
            +
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 113 113 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 114 114 |  | 
| 115 115 | 
             
                  - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
         | 
| 116 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 116 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 117 117 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
         | 
| @@ -64,11 +64,11 @@ jobs: | |
| 64 64 |  | 
| 65 65 | 
             
                steps:
         | 
| 66 66 | 
             
                  - name: Checkout
         | 
| 67 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 67 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 68 68 | 
             
                    uses: actions/checkout@v5
         | 
| 69 69 |  | 
| 70 70 | 
             
                  - name: Setup Ruby & RubyGems
         | 
| 71 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 71 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 72 72 | 
             
                    uses: ruby/setup-ruby@v1
         | 
| 73 73 | 
             
                    with:
         | 
| 74 74 | 
             
                      ruby-version: ${{ matrix.ruby }}
         | 
| @@ -80,12 +80,12 @@ jobs: | |
| 80 80 | 
             
                  # We need to do this first to get appraisal installed.
         | 
| 81 81 | 
             
                  # NOTE: This does not use the primary Gemfile at all.
         | 
| 82 82 | 
             
                  - name: Install Root Appraisal
         | 
| 83 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 83 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 84 84 | 
             
                    run: bundle
         | 
| 85 85 |  | 
| 86 86 | 
             
                  - name: "[Attempt 1] Install Root Appraisal"
         | 
| 87 87 | 
             
                    id: bundleAttempt1
         | 
| 88 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 88 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 89 89 | 
             
                    run: bundle
         | 
| 90 90 | 
             
                    # Continue to the next step on failure
         | 
| 91 91 | 
             
                    continue-on-error: true
         | 
| @@ -94,12 +94,12 @@ jobs: | |
| 94 94 | 
             
                  - name: "[Attempt 2] Install Root Appraisal"
         | 
| 95 95 | 
             
                    id: bundleAttempt2
         | 
| 96 96 | 
             
                    # If bundleAttempt1 failed, try again here; Otherwise skip.
         | 
| 97 | 
            -
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 97 | 
            +
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 98 98 | 
             
                    run: bundle
         | 
| 99 99 |  | 
| 100 100 | 
             
                  - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 101 101 | 
             
                    id: bundleAppraisalAttempt1
         | 
| 102 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 102 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 103 103 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 104 104 | 
             
                    # Continue to the next step on failure
         | 
| 105 105 | 
             
                    continue-on-error: true
         | 
| @@ -108,9 +108,9 @@ jobs: | |
| 108 108 | 
             
                  - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 109 109 | 
             
                    id: bundleAppraisalAttempt2
         | 
| 110 110 | 
             
                    # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
         | 
| 111 | 
            -
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 111 | 
            +
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 112 112 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 113 113 |  | 
| 114 114 | 
             
                  - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
         | 
| 115 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 115 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 116 116 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
         | 
| @@ -47,11 +47,11 @@ jobs: | |
| 47 47 |  | 
| 48 48 | 
             
                steps:
         | 
| 49 49 | 
             
                  - name: Checkout
         | 
| 50 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 50 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 51 51 | 
             
                    uses: actions/checkout@v5
         | 
| 52 52 |  | 
| 53 53 | 
             
                  - name: Setup Ruby & RubyGems
         | 
| 54 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 54 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 55 55 | 
             
                    uses: ruby/setup-ruby@v1
         | 
| 56 56 | 
             
                    with:
         | 
| 57 57 | 
             
                      ruby-version: ${{ matrix.ruby }}
         | 
| @@ -63,12 +63,12 @@ jobs: | |
| 63 63 | 
             
                  # We need to do this first to get appraisal installed.
         | 
| 64 64 | 
             
                  # NOTE: This does not use the primary Gemfile at all.
         | 
| 65 65 | 
             
                  - name: Install Root Appraisal
         | 
| 66 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 66 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 67 67 | 
             
                    run: bundle
         | 
| 68 68 |  | 
| 69 69 | 
             
                  - name: "[Attempt 1] Install Root Appraisal"
         | 
| 70 70 | 
             
                    id: bundleAttempt1
         | 
| 71 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 71 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 72 72 | 
             
                    run: bundle
         | 
| 73 73 | 
             
                    # Continue to the next step on failure
         | 
| 74 74 | 
             
                    continue-on-error: true
         | 
| @@ -77,12 +77,12 @@ jobs: | |
| 77 77 | 
             
                  - name: "[Attempt 2] Install Root Appraisal"
         | 
| 78 78 | 
             
                    id: bundleAttempt2
         | 
| 79 79 | 
             
                    # If bundleAttempt1 failed, try again here; Otherwise skip.
         | 
| 80 | 
            -
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 80 | 
            +
                    if: ${{ steps.bundleAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 81 81 | 
             
                    run: bundle
         | 
| 82 82 |  | 
| 83 83 | 
             
                  - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 84 84 | 
             
                    id: bundleAppraisalAttempt1
         | 
| 85 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 85 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 86 86 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 87 87 | 
             
                    # Continue to the next step on failure
         | 
| 88 88 | 
             
                    continue-on-error: true
         | 
| @@ -91,9 +91,9 @@ jobs: | |
| 91 91 | 
             
                  - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
         | 
| 92 92 | 
             
                    id: bundleAppraisalAttempt2
         | 
| 93 93 | 
             
                    # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
         | 
| 94 | 
            -
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 94 | 
            +
                    if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 95 95 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle
         | 
| 96 96 |  | 
| 97 97 | 
             
                  - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
         | 
| 98 | 
            -
                    if: ${{ !(env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 98 | 
            +
                    if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
         | 
| 99 99 | 
             
                    run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
         | 
    
        data/.tool-versions
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            ruby 3.4. | 
| 1 | 
            +
            ruby 3.4.7
         | 
    
        data/Appraisal.root.gemfile
    CHANGED
    
    | @@ -1,8 +1,6 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
            source "https://rubygems.org"
         | 
| 3 | 
            +
            source "https://gem.coop"
         | 
| 6 4 |  | 
| 7 5 | 
             
            # Appraisal Root Gemfile is for running appraisal to generate the Appraisal Gemfiles
         | 
| 8 6 | 
             
            #   in gemfiles/*gemfile.
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -30,6 +30,45 @@ Please file a bug if you notice a violation of semantic versioning. | |
| 30 30 |  | 
| 31 31 | 
             
            ### Security
         | 
| 32 32 |  | 
| 33 | 
            +
            ## [1.1.33] - 2025-10-13
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            - TAG: [v1.1.33][1.1.33t]
         | 
| 36 | 
            +
            - COVERAGE: 20.83% -- 245/1176 lines in 9 files
         | 
| 37 | 
            +
            - BRANCH COVERAGE: 7.31% -- 43/588 branches in 9 files
         | 
| 38 | 
            +
            - 79.57% documented
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            ### Added
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            - handling for no open source collective, specified by:
         | 
| 43 | 
            +
              - `ENV["FUNDING_ORG"]` set to "false", or
         | 
| 44 | 
            +
              - `ENV["OPENCOLLECTIVE_HANDLE"]` set to "false"
         | 
| 45 | 
            +
            - added codeberg gem source
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            ### Changed
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            - removed redundant github gem source
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            ### Fixed
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            - added addressable to optional modular gemfile template, as it is required for kettle-pre-release
         | 
| 54 | 
            +
            - handling of env.ACT conditions in workflows
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            ## [1.1.32] - 2025-10-07
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            - TAG: [v1.1.32][1.1.32t]
         | 
| 59 | 
            +
            - COVERAGE: 96.39% -- 3929/4076 lines in 26 files
         | 
| 60 | 
            +
            - BRANCH COVERAGE: 81.07% -- 1619/1997 branches in 26 files
         | 
| 61 | 
            +
            - 79.12% documented
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            ### Added
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            - A top-level note on gem server switch in README.md & template
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            ### Changed
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            - Switch to cooperative gem server
         | 
| 70 | 
            +
              - https://gem.coop
         | 
| 71 | 
            +
             | 
| 33 72 | 
             
            ## [1.1.31] - 2025-09-21
         | 
| 34 73 |  | 
| 35 74 | 
             
            - TAG: [v1.1.31][1.1.31t]
         | 
| @@ -1042,7 +1081,11 @@ Please file a bug if you notice a violation of semantic versioning. | |
| 1042 1081 | 
             
              - Selecting will run the selected workflow via `act`
         | 
| 1043 1082 | 
             
              - This may move to its own gem in the future.
         | 
| 1044 1083 |  | 
| 1045 | 
            -
            [Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1. | 
| 1084 | 
            +
            [Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.33...HEAD
         | 
| 1085 | 
            +
            [1.1.33]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.32...v1.1.33
         | 
| 1086 | 
            +
            [1.1.33t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.33
         | 
| 1087 | 
            +
            [1.1.32]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.31...v1.1.32
         | 
| 1088 | 
            +
            [1.1.32t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.32
         | 
| 1046 1089 | 
             
            [1.1.31]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.30...v1.1.31
         | 
| 1047 1090 | 
             
            [1.1.31t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.31
         | 
| 1048 1091 | 
             
            [1.1.30]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.29...v1.1.30
         | 
    
        data/CONTRIBUTING.md
    CHANGED
    
    | @@ -167,7 +167,7 @@ Also see GitLab Contributors: [https://gitlab.com/kettle-rb/kettle-dev/-/graphs/ | |
| 167 167 | 
             
            **IMPORTANT**: To sign a build,
         | 
| 168 168 | 
             
            a public key for signing gems will need to be picked up by the line in the
         | 
| 169 169 | 
             
            `gemspec` defining the `spec.cert_chain` (check the relevant ENV variables there).
         | 
| 170 | 
            -
            All releases  | 
| 170 | 
            +
            All releases are signed releases.
         | 
| 171 171 | 
             
            See: [RubyGems Security Guide][🔒️rubygems-security-guide]
         | 
| 172 172 |  | 
| 173 173 | 
             
            NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in the environment.
         | 
| @@ -205,7 +205,7 @@ NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in th | |
| 205 205 | 
             
            12. Sanity check the SHA256, comparing with the output from the `bin/gem_checksums` command:
         | 
| 206 206 | 
             
                - `sha256sum pkg/<gem name>-<version>.gem`
         | 
| 207 207 | 
             
            13. Run `bundle exec rake release` which will create a git tag for the version,
         | 
| 208 | 
            -
                push git commits and tags, and push the `.gem` file to  | 
| 208 | 
            +
                push git commits and tags, and push the `.gem` file to the gem host configured in the gemspec.
         | 
| 209 209 |  | 
| 210 210 | 
             
            [📜src-gl]: https://gitlab.com/kettle-rb/kettle-dev/
         | 
| 211 211 | 
             
            [📜src-cb]: https://codeberg.org/kettle-rb/kettle-dev
         | 
| @@ -216,7 +216,7 @@ NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in th | |
| 216 216 | 
             
            [🖐contributors]: https://github.com/kettle-rb/kettle-dev/graphs/contributors
         | 
| 217 217 | 
             
            [🚎contributors-gl]: https://gitlab.com/kettle-rb/kettle-dev/-/graphs/main
         | 
| 218 218 | 
             
            [🖐contributors-img]: https://contrib.rocks/image?repo=kettle-rb/kettle-dev
         | 
| 219 | 
            -
            [💎 | 
| 219 | 
            +
            [💎gem-coop]: https://gem.coop
         | 
| 220 220 | 
             
            [🔒️rubygems-security-guide]: https://guides.rubygems.org/security/#building-gems
         | 
| 221 221 | 
             
            [🔒️rubygems-checksums-pr]: https://github.com/rubygems/rubygems/pull/6022
         | 
| 222 222 | 
             
            [🔒️rubygems-guides-pr]: https://github.com/rubygems/guides/pull/325
         | 
| @@ -0,0 +1,66 @@ | |
| 1 | 
            +
            <!-- RELEASE-NOTES-FOOTER-START -->
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Official Discord 👉️ [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Many paths lead to being a sponsor or a backer of this project. Are you on such a path?
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal]
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
         | 
| 12 | 
            +
            [⛳liberapay]: https://liberapay.com/pboling/donate
         | 
| 13 | 
            +
            [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
         | 
| 14 | 
            +
            [🖇sponsor]: https://github.com/sponsors/pboling
         | 
| 15 | 
            +
            [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
         | 
| 16 | 
            +
            [🖇polar]: https://polar.sh/pboling
         | 
| 17 | 
            +
            [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
         | 
| 18 | 
            +
            [🖇kofi]: https://ko-fi.com/O5O86SNP4
         | 
| 19 | 
            +
            [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
         | 
| 20 | 
            +
            [🖇patreon]: https://patreon.com/galtzo
         | 
| 21 | 
            +
            [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
         | 
| 22 | 
            +
            [🖇buyme]: https://www.buymeacoffee.com/pboling
         | 
| 23 | 
            +
            [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
         | 
| 24 | 
            +
            [🖇paypal]: https://www.paypal.com/paypalme/peterboling
         | 
| 25 | 
            +
            [✉️discord-invite]: https://discord.gg/3qme4XHNKN
         | 
| 26 | 
            +
            [✉️discord-invite-img]: https://img.shields.io/discord/1373797679469170758?style=flat
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            <!-- RELEASE-NOTES-FOOTER-END -->
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            # 🤑 Request for Help
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            Maintainers have teeth and need to pay their dentists.
         | 
| 33 | 
            +
            After getting laid off in an RIF in March and filled with many dozens of rejections,
         | 
| 34 | 
            +
            I'm now spending ~60+ hours a week building open source tools.
         | 
| 35 | 
            +
            I'm hoping to be able to pay for my kids' health insurance this month,
         | 
| 36 | 
            +
            so if you value the work I am doing, I need your support.
         | 
| 37 | 
            +
            Please consider sponsoring me or the project.
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            To join the community or get help 👇️ Join the Discord.
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            To say "thanks for maintaining such a great tool" ☝️ Join the Discord or 👇️ send money.
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay-img] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal-img]
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            # Another Way to Support Open Source Software
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            > How wonderful it is that nobody need wait a single moment before starting to improve the world.<br/>
         | 
| 50 | 
            +
            >—Anne Frank
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small.  Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions — totaling 79 hours of FLOSS coding over just the past seven days, a pretty regular week for me.  I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈 cats).
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed to empower open-source developers like myself to get paid for the work we do, in a sustainable way. Please give it a look.
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
         | 
| 61 | 
            +
            [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
         | 
| 62 | 
            +
            [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
         | 
| 63 | 
            +
            [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
         | 
| 64 | 
            +
            [🖇floss-funding.dev]: https://floss-funding.dev
         | 
| 65 | 
            +
            [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
         | 
| 66 | 
            +
            [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
            source "https:// | 
| 3 | 
            +
            source "https://gem.coop"
         | 
| 4 4 |  | 
| 5 | 
            -
            git_source(: | 
| 5 | 
            +
            git_source(:codeberg) { |repo_name| "https://codeberg.org/#{repo_name}" }
         | 
| 6 6 | 
             
            git_source(:gitlab) { |repo_name| "https://gitlab.com/#{repo_name}" }
         | 
| 7 7 |  | 
| 8 8 | 
             
            #### IMPORTANT #######################################################
         | 
    
        data/Gemfile.example
    CHANGED
    
    | @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
            source "https:// | 
| 3 | 
            +
            source "https://gem.coop"
         | 
| 4 4 |  | 
| 5 | 
            -
            git_source(: | 
| 5 | 
            +
            git_source(:codeberg) { |repo_name| "https://codeberg.org/#{repo_name}" }
         | 
| 6 6 | 
             
            git_source(:gitlab) { |repo_name| "https://gitlab.com/#{repo_name}" }
         | 
| 7 7 |  | 
| 8 8 | 
             
            #### IMPORTANT #######################################################
         |