Skip to content

appraisal-rb/setup-ruby-flash

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0 Appraisal-rb Logo by Aboling0, CC BY-SA 4.0 ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5

⚡️ setup-ruby-flash

Find out how fast my workflows can go!

  • You, possibly

CI GitHub tag (latest SemVer) License: MIT

A fast GitHub Action for fast Ruby environment setup using rv for Ruby installation and ore for gem management.

⚡ Install Ruby in under 2 seconds — no compilation required!

⚡ Install Gems 50% faster — using ORE ✅️!

Features

  • 🚀 Lightning-fast Ruby installation via prebuilt binaries from rv
  • 📦 Rapid gem installation with ore (Bundler-compatible, ~50% faster)
  • 💾 Intelligent caching for both Ruby and gems
  • 🔒 Security auditing via ore audit
  • 🐧 Linux & macOS support (x86_64 and ARM64)
  • ☕️ Gitea Actions support
  • 🦊 Forgejo Actions support
  • 🧊 Codeberg Actions support
  • 🐙 GitHub Actions support

Requirements

  • Operating Systems: Ubuntu 22.04+, macOS 14+
  • Architectures: x86_64, ARM64
  • Ruby Versions: 3.2, 3.3, 3.4, 4.0
# Important Alternative
1 Windows is not supported ruby/setup-ruby
2 Ruby <= 3.1 is not supported ruby/setup-ruby

Why?

Click to see historical background around why I built this
📍 NOTE
RubyGems (the GitHub org, not the website) suffered a hostile takeover in September 2025.
Ultimately 4 maintainers were hard removed and an reason has been given for only 1 of those, while 2 others resigned in protest.
It is a complicated story which is difficult to parse quickly.
Simply put - there was active policy for adding or removing maintainers/owners of rubygems and bundler, and those policies were not followed.
I'm adding notes like this to gems because I don't condone theft of repositories or gems from their rightful owners.
If a similar theft happened with my repos/gems, I'd hope some would stand up for me.
Disenfranchised former-maintainers have started gem.coop.
Once available I will publish there exclusively; unless RubyCentral makes amends with the community.
The "Technology for Humans: Joel Draper" podcast episode by reinteractive is the most cogent summary I'm aware of.
See here, here and here for more info on what comes next.
What I'm doing: A (WIP) proposal for bundler/gem scopes, and a (WIP) proposal for a federated gem server.

Quick Start

Basic Usage

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

With Gem Installation

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

Using Version Files

When ruby-version is set to default (the default), setup-ruby-flash reads from:

  • .ruby-version
  • .tool-versions (asdf format)
  • mise.toml
- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ore-install: true

Inputs

Input Description Default
ruby-version Ruby version to install (e.g., 3.4, 3.4.1). Use ruby for latest stable version, or default to read from version files. default
rubygems RubyGems version: default, latest, or a version number (e.g., 3.5.0) default
bundler Bundler version: Gemfile.lock, default, latest, none, or a version number Gemfile.lock
ore-install Run ore install and cache gems false
working-directory Directory for version files and Gemfile .
cache-version Cache version string for invalidation v1
rv-version Version of rv to install latest
ore-version Version of ore to install latest
skip-extensions Skip building native extensions false
without-groups Gem groups to exclude (comma-separated) ''
ruby-install-retries Number of retry attempts for Ruby installation (with exponential backoff) 3
token GitHub token for API calls ${{ github.token }}

Outputs

Output Description
ruby-version The installed Ruby version
ruby-prefix The path to the Ruby installation
rv-version The installed rv version
rubygems-version The installed RubyGems version
bundler-version The installed Bundler version
ore-version The installed ore version
cache-hit Whether gems were restored from cache

Examples

Matrix Build

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

Production Gems Only

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

Latest Ruby with Latest RubyGems and Bundler

- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: ruby
    rubygems: latest
    bundler: latest
    ore-install: true

Specific RubyGems Version

- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4'
    rubygems: '3.5.0'
    ore-install: true

Skip Native Extensions

- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4'
    ore-install: true
    skip-extensions: true

Custom Working Directory

- uses: appraisal-rb/setup-ruby-flash@v1
  with:
    ruby-version: '3.4'
    ore-install: true
    working-directory: './my-app'

Specific Tool Versions

- 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

Custom Retry Configuration

If you experience intermittent failures due to GitHub API rate limiting, you can adjust the number of retry attempts:

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

Migration from setup-ruby

setup-ruby-flash is designed to be a near drop-in replacement for ruby/setup-ruby on supported platforms:

# Before (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

With Latest RubyGems and Bundler

# Before (setup-ruby)
- uses: ruby/setup-ruby@v1
  with:
    ruby-version: ruby
    rubygems: latest
    bundler: latest

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

Key Differences

Feature setup-ruby setup-ruby-flash
Ruby Install ~5 seconds < 2 seconds
Gem Install Bundler ore (~50% faster)
ruby-version: ruby ✅ latest stable ✅ latest stable
rubygems: latest
bundler: latest
Windows
Ruby < 3.2
JRuby ❌ (planned)
TruffleRuby ❌ (planned)
Security Audit ✅ (ore audit)

About rv and ore

rv

rv is an extremely fast Ruby version manager written in Rust. It downloads prebuilt Ruby binaries, eliminating the need for compilation. Created by @indirect, long-time project lead for Bundler and RubyGems.

ore

ore is a fast gem installer written in Go. It's Bundler-compatible but performs downloads significantly faster using Go's concurrency features. Use bundle exec to run gem commands after ore installs your gems. Created by @seuros, a long time Rubyist, and prolific writer.

Development

# Setup
bundle install

# Run tests
rake spec

# Run linter
rake lint

# Run all checks
rake ci

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/appraisal-rb/setup-ruby-flash.

License

The MIT License covers this software.

See LICENSE for details, but note the following:

  1. The terms of the MIT License let you use and share this software for all purposes, commercial, and non-commercial, for free.
  2. However, the MIT License allows selling copies of the software for a fee, and I have chosen to do this for big businesses, as an ethical matter, not a legal matter.
  3. Paid (optional) licenses for big businesses are available on fair, reasonable, and nondiscriminatory terms.
  4. So, anyone can use the software for free in any and all cases... But to quote the MIT License itself,

Permission is hereby granted, free of charge, to any person ..., to deal in the Software without restriction, including without limitation the rights to ... sell copies of the Software

Open source will die without commercial support, so I am letting you know when and what you should pay as an ethical matter, not as a legal matter.

Definitions of Terms (What is a Big Business?)

The purpose of these definitions is to explain when I am asking you, as an ethical matter (not a legal one), to consider purchasing a commercial license.

These definitions are inspired by the Big Time Public License version 2.0.2 and are provided solely for these voluntary ethical guidelines. They do not modify or limit the MIT License that legally governs this project.

Noncommercial Purposes

You may use the software for any noncommercial purpose.

Personal Uses

Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, count as use for noncommercial purposes.

Noncommercial Organizations

Use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization, or government institution counts as use for noncommercial purposes, regardless of the source of funding or obligations resulting from the funding.

Small Business

You may use the software for the benefit of your company if it meets all these criteria:

  1. had fewer than 20 total individuals working as employees and independent contractors at all times during the last tax year

  2. earned less than $1,000,000 total revenue in the last tax year

  3. received less than $1,000,000 total debt, equity, and other investment in the last five tax years, counting investment in predecessor companies that reorganized into, merged with, or spun out your company

All dollar figures are United States dollars as of 2019. Adjust them for inflation according to the United States Bureau of Labor Statistics' consumer price index for all urban consumers, United States city average, for all items, not seasonally adjusted, with 1982–1984=100 reference base.

Big Business

You may use the software for the benefit of your company:

  1. for 128 days after your company stops qualifying under Small Business

  2. indefinitely, if the licensor or their legal successor does not offer fair, reasonable, and nondiscriminatory terms for a commercial license for the software within 32 days of written request and negotiate in good faith to conclude a deal

Paid licenses

$0.25 USD per employee per year for qualifying "Big Business" commercial use, as defined above. If you're interested in licensing setup-ruby-flash for your business, please contact [email protected], and join the Official Discord 👉️ Live Chat on Discord.

40 employees = $10 USD per year

Note: You should also donate to Spinel Cooperative and Contriboss, as this project would not exist without them.

How to Request

Request a fair commercial license by sending an email to [email protected] and messaging the #org-appraisal-rb channel on the Official Discord 👉️ Live Chat on Discord. If both of your contact attempts fail to elicit a response within the time period allotted in Big Business the licensor will consider that equivalent to a fair commercial license under Big Business.

🤑 A request for help

Maintainers have teeth and need to pay their dentists. After getting laid off in an RIF in March, and encountering difficulty finding a new one, I began spending most of my time building open source tools. I'm hoping to be able to pay for my kids' health insurance this month, so if you value the work I am doing, I need your support. Please consider sponsoring me or the project.

To join the community or get help 👇️ Join the Discord.

Live Chat on Discord

To say "thanks!" ☝️ Join the Discord or 👇️ send money.

Sponsor appraisal-rb/ast-merge on Open Source Collective 💌 Sponsor me on GitHub Sponsors 💌 Sponsor me on Liberapay 💌 Donate on PayPal

Acknowledgements

  • setup-ruby the venerable mainstay for many years, and inspiration for this project.
  • rv by Spinel Cooperative
  • ore by Contriboss

About

GHA: ⚡️Fast Setup of Ruby & Gems via rv & ore (alternative to setup-ruby)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages