⚡️ 设置‑Ruby‑Flash
发布: (2026年1月19日 GMT+8 11:03)
4 min read
原文: Dev.to
Source: Dev.to
概览
一个快速的 GitHub Action,用于通过 rv 安装 Ruby 并使用 ore 管理 gem,以设置 Ruby 环境。
- ⚡ 在 2 秒内安装 Ruby — 无需编译
- ⚡ 使用 ore 安装 gem 可提升至 50 % 的速度
- 🚀 通过 rv 的预构建二进制实现闪电般的 Ruby 安装
- 📦 使用 ore 快速安装 gem(兼容 Bundler)
- 💾 对 Ruby 与 gem 实现智能缓存
- 🔒 通过 ore audit 进行安全审计
支持平台:Linux 与 macOS(x86_64 与 ARM64)——同样适用于 Gitea、Forgejo、Codeberg 和 GitHub Actions。
要求
- 操作系统:Ubuntu 22.04+,macOS 14+
- 架构:x86_64,ARM64
- Ruby 版本:3.2,3.3,4.0
重要
- 不支持 Windows(请改用
ruby/setup-ruby)- 不支持 Ruby ≤ 3.1(请改用
ruby/setup-ruby)
功能
| 功能 | setup‑ruby‑flash | ruby/setup‑ruby |
|---|---|---|
| Ruby 安装时间 | ~5 s → < 2 s | ~5 s |
| Gem 安装速度 | ore(约快 50 %) | Bundler |
| 最新稳定版 Ruby | ✅ | ✅ |
| 最新 RubyGems | ✅ | ✅ |
| 最新 Bundler | ✅ | ✅ |
| Windows 支持 | ✅ | ❌ |
| Ruby < 3.2 | ✅ | ❌ |
| JRuby(计划) | ✅ | ❌ |
| TruffleRuby(计划) | ✅ | ❌ |
| 安全审计(ore) | ❌ | ✅ |
用法
- uses: appraisal-rb/setup-ruby-flash@v1
with:
ruby-version: '3.4' # 例如 3.4、3.4.1,或使用 "ruby" 获取最新稳定版
ore-install: true # 运行 `ore install` 并缓存 gem
其他选项
- uses: appraisal-rb/setup-ruby-flash@v1
with:
ruby-version: '3.4'
ore-install: true
without-groups: 'development,test' # 排除 gem 组
当省略 ruby-version 时,action 会从以下文件读取 Ruby 版本:
.ruby-version.tool-versions(asdf 格式)mise.toml
| 输入 | 描述 | 默认 |
|---|---|---|
ruby-version | 要安装的 Ruby 版本(例如 3.4、3.4.1)。使用 ruby 表示最新稳定版,或省略以从版本文件读取。 | default |
rubygems | RubyGems 版本:default、latest 或具体版本(例如 3.5.0)。 | default |
bundler | Bundler 版本:Gemfile.lock、default、latest、none 或具体版本。 | Gemfile.lock |
ore-install | 运行 ore install 并缓存 gem。 | false |
working-directory | 包含版本文件和 Gemfile 的目录。 | . |
cache-version | 用于失效的缓存版本字符串。 | v1 |
rv-version | 要安装的 rv 版本。 | latest |
ore-version | 要安装的 ore 版本。 | latest |
skip-extensions | 跳过构建本机扩展。 | false |
without-groups | 以逗号分隔的要排除的 gem 组。 | '' |
ruby-install-retries | Ruby 安装的重试次数(指数退避)。 | 3 |
token | 用于 API 调用的 GitHub 令牌。 | ${{ github.token }} |
输出
| Output | Description |
|---|---|
ruby-version | 已安装的 Ruby 版本 |
ruby-prefix | Ruby 安装路径 |
rv-version | 已安装的 rv 版本 |
rubygems-version | 已安装的 RubyGems 版本 |
bundler-version | 已安装的 Bundler 版本 |
ore-version | 已安装的 ore 版本 |
cache-hit | 是否从缓存中恢复了 gem |
示例工作流
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
高级示例
- 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
如果您遇到由于 GitHub API 速率限制导致的间歇性失败,请增加重试次数:
- uses: appraisal-rb/setup-ruby-flash@v1
with:
ruby-version: '3.4'
ruby-install-retries: '5'
与 ruby/setup-ruby 的比较
之前(ruby/setup-ruby)
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4'
bundler-cache: true
- run: bundle exec rake test
之后(setup-ruby-flash)
- uses: appraisal-rb/setup-ruby-flash@v1
with:
ruby-version: '3.4'
ore-install: true
- run: bundle exec rake test
另一个示例:
之前
- uses: ruby/setup-ruby@v1
with:
ruby-version: ruby
rubygems: latest
bundler: latest
之后
- uses: appraisal-rb/setup-ruby-flash@v1
with:
ruby-version: ruby
rubygems: latest
bundler: latest
致谢
- setup-ruby – 长期存在的参考实现。
- rv – 由 Spinel Cooperative 创建。
- ore – 由 Contriboss 创建。
我是一名全职 FLOSS 维护者。如果您觉得我的工作有价值,请考虑成为赞助者——每一美元都很有帮助!
支持
🥰 支持 FLOSS 工作 🥰
获取 Galtzo FLOSS Discord 上的 “Sponsors” 频道的访问权限。