⚡️ setup-ruby-flash

Published: (January 18, 2026 at 10:03 PM EST)
3 min read
Source: Dev.to

Source: Dev.to

Find out how fast my workflows can go!

Overview

A fast GitHub Action for setting up a Ruby environment using rv for Ruby installation and ore for gem management.

  • ⚡ Install Ruby in under 2 seconds — no compilation required
  • ⚡ Install gems up to 50 % faster with ore
  • 🚀 Lightning‑fast Ruby installation via pre‑built binaries from rv
  • 📦 Rapid gem installation with ore (Bundler‑compatible)
  • 💾 Intelligent caching for both Ruby and gems
  • 🔒 Security auditing via ore audit

Supported platforms: Linux & macOS (x86_64 & ARM64) – also works with Gitea, Forgejo, Codeberg, and GitHub Actions.

Requirements

  • Operating Systems: Ubuntu 22.04+, macOS 14+
  • Architectures: x86_64, ARM64
  • Ruby Versions: 3.2, 3.3, 3.4, 4.0

Important

  • Windows is not supported (use ruby/setup-ruby instead)
  • Ruby ≤ 3.1 is not supported (use ruby/setup-ruby instead)

Features

Featuresetup‑ruby‑flashruby/setup‑ruby
Ruby install time~5 s → < 2 s~5 s
Gem install speedore (~50 % faster)Bundler
Latest stable Ruby
Latest RubyGems
Latest Bundler
Windows support
Ruby < 3.2
JRuby (planned)
TruffleRuby (planned)
Security audit (ore)

Usage

- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4'          # e.g. 3.4, 3.4.1, or "ruby" for latest stable
    ore-install: true            # run `ore install` and cache gems

Additional options:

- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4'
    ore-install: true
    without-groups: 'development,test'   # exclude gem groups

The action reads the Ruby version from the following files when ruby-version is omitted:

  • .ruby-version
  • .tool-versions (asdf format)
  • mise.toml

Inputs

InputDescriptionDefault
ruby-versionRuby version to install (e.g., 3.4, 3.4.1). Use ruby for the latest stable version or omit to read from version files.default
rubygemsRubyGems version: default, latest, or a specific version (e.g., 3.5.0).default
bundlerBundler version: Gemfile.lock, default, latest, none, or a specific version.Gemfile.lock
ore-installRun ore install and cache gems.false
working-directoryDirectory containing version files and Gemfile..
cache-versionCache version string for invalidation.v1
rv-versionVersion of rv to install.latest
ore-versionVersion of ore to install.latest
skip-extensionsSkip building native extensions.false
without-groupsComma‑separated gem groups to exclude.''
ruby-install-retriesNumber of retry attempts for Ruby installation (exponential back‑off).3
tokenGitHub token for API calls.${{ github.token }}

Outputs

OutputDescription
ruby-versionThe installed Ruby version
ruby-prefixPath to the Ruby installation
rv-versionThe installed rv version
rubygems-versionThe installed RubyGems version
bundler-versionThe installed Bundler version
ore-versionThe installed ore version
cache-hitWhether gems were restored from cache

Example Workflow

name: CI
on: [push, pull_request]

jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest]
        ruby: ['3.2', '3.3', '3.4']
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v5
      - uses: appraisal-rb/setup-ruby-flash@v1
        with:
          ruby-version: ${{ matrix.ruby }}
          ore-install: true
      - run: bundle exec rake test

Advanced examples

- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4'
    ore-install: true
    without-groups: 'development,test'
- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: ruby
    rubygems: latest
    bundler: latest
    ore-install: true
- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4'
    rubygems: '3.5.0'
    ore-install: true
- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4'
    ore-install: true
    skip-extensions: true
- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4'
    ore-install: true
    working-directory: './my-app'
- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4.1'
    rv-version: '0.4.0'
    ore-version: '0.1.0'
    ore-install: true

If you encounter intermittent failures due to GitHub API rate limiting, increase the retry count:

- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4'
    ruby-install-retries: '5'

Comparison with ruby/setup-ruby

Before (ruby/setup-ruby)

- uses: ruby/setup-ruby@v1
  with:
    ruby-version: '3.4'
    bundler-cache: true
- run: bundle exec rake test

After (setup-ruby-flash)

- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4'
    ore-install: true
- run: bundle exec rake test

Another example:

# Before
- uses: ruby/setup-ruby@v1
  with:
    ruby-version: ruby
    rubygems: latest
    bundler: latest
# After
- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: ruby
    rubygems: latest
    bundler: latest

Credits

  • setup-ruby – the long‑standing reference implementation.
  • rv – created by the Spinel Cooperative.
  • ore – created by Contriboss.

I am a full‑time FLOSS maintainer. If you find my work valuable, consider becoming a sponsor—every dollar helps!

Support

🥰 Support FLOSS work 🥰
Get access to the “Sponsors” channel on the Galtzo FLOSS Discord.

Back to Blog

Related posts

Read more »