# use-ruby This action downloads a prebuilt ruby and adds it to `$PATH`. It is very efficient and takes about 5 seconds to download, extract and add the given Ruby to `$PATH`. No extra packages need to be installed. ### Supported Versions This action currently supports these versions of MRI, JRuby and TruffleRuby: | Interpreter | Versions | | ----------- | -------- | | Ruby | 2.3.8, 2.4.9, 2.5.7, 2.6.5, 2.7.0 | | JRuby | 9.2.9.0 | | TruffleRuby | 19.3.0 | See https://github.com/eregon/ruby-install-builder/blob/metadata/versions.json for the always up-to-date list of available Ruby versions. Note that Ruby 2.3 and the OpenSSL version it needs (1.0.2) are both end-of-life, which means Ruby 2.3 is unmaintained and considered insecure. ### Supported Platforms The action works for the `ubuntu-16.04`, `ubuntu-18.04` and `macos-latest` GitHub-hosted runners. `windows-latest` is not yet supported. The prebuilt rubies are generated by https://github.com/eregon/ruby-install-builder. ## Usage ### Single Job ```yaml name: My workflow on: [push] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: eregon/use-ruby-action@master with: ruby-version: ruby-2.6 - run: ruby -v ``` ### Matrix ```yaml name: My workflow on: [push] jobs: test: strategy: fail-fast: false matrix: os: [ ubuntu-latest, macos-latest ] ruby: [ ruby-2.6, ruby-2.7, jruby-9.2.9.0, truffleruby-19.3.0 ] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - uses: eregon/use-ruby-action@master with: ruby-version: ${{ matrix.ruby }} - run: ruby -v ``` ### Supported Version Syntax * engine-version like `ruby-2.6.5` and `truffleruby-19.3.0` * short version like `2.6`, automatically using the latest release matching that version (`2.6.5`) * version only like `2.6.5`, assumes MRI for the engine * engine only like `truffleruby`, uses the latest stable release of that implementation ### All Stable Versions With that, we can test on all stable releases of MRI, JRuby and TruffleRuby with: ```yaml name: My workflow on: [push] jobs: test: strategy: fail-fast: false matrix: os: [ ubuntu-latest, macos-latest ] ruby: [ 2.4, 2.5, 2.6, 2.7, jruby, truffleruby ] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - uses: eregon/use-ruby-action@master with: ruby-version: ${{ matrix.ruby }} - run: ruby -v ``` ## Limitations * Currently does not work on Windows since the builder doesn't build on Windows. https://github.com/MSP-Greg/actions-ruby is an alternative on Windows. * This action currently only works with GitHub-hosted runners, not private runners.