⚡️ Ruby Flash 설정
Source: Dev.to
번역할 텍스트를 제공해 주시면 한국어로 번역해 드리겠습니다.
개요
Ruby 설치를 위해 rv, gem 관리를 위해 ore를 사용하는 빠른 GitHub Action으로 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사용)
기능
| Feature | setup‑ruby‑flash | ruby/setup‑ruby |
|---|---|---|
| Ruby 설치 시간 | ~5 s → < 2 s | ~5 s |
| Gem 설치 속도 | ore (~50 % faster) | Bundler |
| 최신 안정 Ruby | ✅ | ✅ |
| 최신 RubyGems | ✅ | ✅ |
| 최신 Bundler | ✅ | ✅ |
| Windows 지원 | ✅ | ❌ |
| Ruby < 3.2 | ✅ | ❌ |
| JRuby (예정) | ✅ | ❌ |
| TruffleRuby (예정) | ✅ | ❌ |
| 보안 감사 (ore) | ❌ | ✅ |
사용법
- 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
추가 옵션
- uses: appraisal-rb/setup-ruby-flash@v1
with:
ruby-version: '3.4'
ore-install: true
without-groups: 'development,test' # exclude gem groups
ruby-version이 생략된 경우, 이 액션은 다음 파일들에서 Ruby 버전을 읽어옵니다:
.ruby-version.tool-versions(asdf format)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 }} |
Outputs
| 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” 채널에 접근하세요.