⚡️ Ruby Flash 설정

발행: (2026년 1월 19일 오후 12:03 GMT+9)
5 min read
원문: Dev.to

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 사용)

기능

Featuresetup‑ruby‑flashruby/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-versionRuby 버전을 설치합니다 (예: 3.4, 3.4.1). 최신 안정 버전을 위해 ruby를 사용하거나, 버전 파일에서 읽으려면 생략합니다.default
rubygemsRubyGems 버전: default, latest 또는 특정 버전 (예: 3.5.0).default
bundlerBundler 버전: Gemfile.lock, default, latest, none 또는 특정 버전.Gemfile.lock
ore-installore 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-retriesRuby 설치 시 재시도 횟수 (지수 백오프).3
tokenAPI 호출을 위한 GitHub 토큰.${{ github.token }}

Outputs

OutputDescription
ruby-version설치된 Ruby 버전
ruby-prefixRuby 설치 경로
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” 채널에 접근하세요.

Back to Blog

관련 글

더 보기 »

기술은 구원자가 아니라 촉진자다

왜 사고의 명확성이 사용하는 도구보다 더 중요한가? Technology는 종종 마법 스위치처럼 취급된다—켜기만 하면 모든 것이 개선된다. 새로운 software, ...

에이전틱 코딩에 입문하기

Copilot Agent와의 경험 나는 주로 GitHub Copilot을 사용해 인라인 편집과 PR 리뷰를 수행했으며, 대부분의 사고는 내 머리로 했습니다. 최근 나는 t...