HOWTO · Ruby

Mac에서 Ruby 버전 변경

Mac에서 Ruby 버전을 변경하는 방법을 보여드리겠습니다.

이 페이지의 내용

Mac에서 Ruby 버전을 바꾸려면 rbenv나 RVM 같은 버전 관리자를 사용하세요. 프로젝트 하나에만 적용할 로컬 버전이나 셸의 기본값으로 사용할 전역 버전을 선택할 수 있습니다. Bundler는 프로젝트에 선언된 Ruby 버전을 사용하는지 확인할 수 있지만, Ruby를 설치하거나 버전을 전환하지는 않습니다. 아래에서는 두 관리자의 사용법을 각각 설명합니다. 하나를 선택한 뒤 셸에서 해당 Ruby를 찾는지 확인하세요.

Mac에 적합한 Ruby 버전 관리자 선택하기

셸의 PATH를 통해 Ruby 버전을 선택하고 프로젝트의 .ruby-version 파일을 읽을 수 있는 간결한 도구를 원한다면 rbenv를 사용하세요. Ruby 젬셋과 더 폭넓은 환경 관리 기능을 선호한다면 RVM을 선택하세요. 두 도구가 같은 셸 시작 파일을 수정하도록 설정하지 마세요. PATH 설정이 서로 충돌하면 현재 사용 중인 버전의 원인을 파악하기 어려워질 수 있습니다.

macOS 설치 환경은 서로 다르므로 변경하기 전에 ruby -v로 현재 사용 가능한 버전을 확인하세요. 모든 Mac에 Ruby가 포함되어 있다거나 패키지 관리자가 특정 “최신” 버전을 제공한다고 가정하지 마세요. 버전 관리자는 요청한 특정 버전을 설치합니다. 이전 Ruby 버전을 빌드할 수 있는지는 설치된 컴파일러와 시스템 라이브러리의 영향을 받을 수 있습니다.

rbenv로 Ruby 설치 및 버전 전환하기

아직 Homebrew를 사용할 수 없다면 먼저 설치하세요. 그런 다음 brew install rbenv로 rbenv를 설치합니다. 현재 Homebrew 환경에서는 셸에서 rbenv init을 실행해 초기화하세요. 명령의 안내에 따라 사용하는 셸에 맞게 설정한 뒤 터미널을 다시 열거나 시작 파일을 다시 불러오세요. 이전 rbenv 설정 안내에는 셸별 초기화 행이 나올 수 있으므로, 설치한 버전에 해당하는 안내를 따르세요.

rbenv install 3.2.2로 Ruby 릴리스를 설치하세요. 예시 버전은 프로젝트에 필요한 버전으로 바꾸면 됩니다. rbenv install 명령을 사용할 수 없다면 rbenv 설치 방식에서 권장하는 방법으로 ruby-build 구성 요소를 설치한 다음 다시 시도하세요.

버전을 적용할 범위를 선택하세요.

  • 프로젝트 디렉터리에서 rbenv local 3.2.2를 실행하세요. 이 명령은 해당 디렉터리의 .ruby-version에 3.2.2를 기록하므로 rbenv는 그 디렉터리와 하위 디렉터리에서 해당 버전을 선택합니다.
  • 로컬 설정이 없는 디렉터리에서 기본값으로 사용할 버전은 rbenv global 3.2.2로 지정하세요.

로컬 설정은 전역 설정보다 우선합니다. rbenv version으로 선택된 버전을 확인한 다음 ruby -v와 which ruby가 예상한 인터프리터를 가리키는지도 확인하세요. ruby가 여전히 다른 위치를 가리킨다면 실제로 사용하는 셸에서 rbenv가 초기화되는지 확인하고, $(rbenv root)/shims가 PATH의 다른 Ruby 경로보다 앞에 있는지 살펴보세요.

RVM으로 Ruby 설치 및 버전 전환하기

RVM은 원격 설치 프로그램을 사용합니다. 설치 프로그램을 실행하기 전에 RVM 프로젝트의 설치 안내를 확인하세요. 다운로드한 스크립트를 셸에 직접 전달하면 네트워크에서 가져온 코드를 실행하게 됩니다. 사용하는 셸에 맞춰 안내대로 RVM을 설치한 뒤 새 터미널을 열거나 셸 통합 기능을 불러오세요. 기존 설치를 현재 세션에 불러오려면 source ~/.rvm/scripts/rvm을 실행할 수 있습니다.

프로젝트에 필요한 Ruby 버전을 rvm install 3.2.2로 설치한 뒤 rvm use 3.2.2로 선택하세요. 새 셸에서도 해당 버전을 기본값으로 사용하려면 rvm use 3.2.2 --default를 실행합니다. 프로젝트 디렉터리에서 rvm use 3.2.2를 실행하면 현재 셸에만 해당 버전이 적용됩니다. 셸 통합 기능을 설정하면 RVM의 프로젝트 파일도 사용할 수 있습니다.

ruby -v와 which ruby로 결과를 확인하세요. 이전 버전이 계속 활성화되어 있다면 현재 셸에서 RVM이 불러와졌는지 확인하고, PATH에서 다른 Ruby 관리자나 시스템 Ruby가 먼저 나타나는지 살펴보세요. RVM과 rbenv는 별개의 도구이므로 한 도구의 명령으로 다른 도구를 설정할 수는 없습니다.

Bundler로 프로젝트의 Ruby 버전 요구하기

프로젝트는 Gemfile에 필요한 Ruby 버전을 선언할 수 있습니다.

ruby "3.2.2"

프로젝트가 지원하는 버전을 사용하세요. 그런 다음 해당 Ruby를 선택한 상태에서 bundle install을 실행합니다. Bundler는 현재 인터프리터가 Gemfile의 요구 사항을 충족하는지 확인하고 프로젝트의 젬을 설치하지만, Ruby를 다운로드하거나 버전을 전환하지는 않습니다. 활성 Ruby가 요구 사항에 맞지 않으면 rbenv나 RVM으로 호환되는 Ruby를 선택하거나 설치한 뒤 Bundler를 다시 실행하세요.

커밋된 .ruby-version 파일을 이용하면 버전 관리자가 프로젝트의 Ruby를 자동으로 선택하도록 할 수 있습니다. 이 파일의 버전을 Gemfile의 요구 사항과 일치시키고, 각 개발자 환경이나 빌드 환경에 필요한 버전이 설치되어 있는지 확인하세요.

활성 Ruby 버전 확인 및 일반적인 문제 해결

애플리케이션을 실행하는 것과 같은 터미널 및 디렉터리에서 다음 명령을 실행하세요.

  • ruby -v는 셸이 실행하는 인터프리터의 버전을 표시합니다.
  • which ruby는 PATH에서 가장 먼저 발견되는 실행 파일을 보여 줍니다.
  • rbenv를 사용할 때 rbenv version은 선택된 버전과 그 출처를 알려 줍니다.
  • RVM을 사용할 때 rvm current는 활성 버전을 알려 줍니다.

다음의 간단한 Ruby 예제는 실행 중인 인터프리터가 보고한 버전을 출력합니다. 제공된 실행에서 Active Ruby: 3.1.2가 출력되었습니다. 이 출력 블록의 레이블은 바이트 동일성 규칙에 따라 영어 그대로 유지됩니다.

puts "Active Ruby: #{RUBY_VERSION}"
Active Ruby: 3.1.2

버전 관리자가 의도한 버전을 보고하는데도 ruby -v 결과가 다르다면 셸이 다른 실행 파일을 찾고 있을 가능성이 큽니다. 현재 사용하는 셸의 시작 파일에 버전 관리자 초기화 설정이 있는지 확인하고, 새 터미널을 연 다음 PATH를 다시 살펴보세요. 현재 디렉터리의 .ruby-version 파일이 rbenv의 전역 선택을 덮어쓰는지도 확인하세요. Bundler가 Ruby 버전 요구 사항 불일치를 보고하면 Gemfile의 요구 사항과 ruby -v 결과를 비교하세요. 젬만 변경해서는 Ruby 인터프리터 버전 불일치를 해결할 수 없습니다.

자주 묻는 질문

Ruby 버전을 여러 개 설치할 수 있나요?

네. rbenv와 RVM 모두 여러 Ruby 버전을 설치해 둘 수 있습니다. 다른 프로젝트에서도 사용할 수 있는 버전을 제거하는 대신, 전역 또는 프로젝트별로 적절한 버전을 선택하세요.

프로젝트 하나에만 다른 Ruby 버전을 사용하려면 어떻게 하나요?

rbenv를 사용한다면 프로젝트 디렉터리에서 rbenv local VERSION을 실행하세요. 선택한 버전이 .ruby-version에 기록됩니다. RVM을 사용한다면 프로젝트 셸에서 rvm use VERSION을 실행하세요. 디렉터리에 들어갈 때 자동으로 버전을 선택하려면 RVM의 프로젝트 파일 지원을 설정하세요. 어느 방법을 사용하든 해당 버전이 설치되어 있는지 확인하고 ruby -v로 검증하세요.

이전 Ruby 버전을 제거해야 하나요?

아니요. 다른 프로젝트에서 필요한 버전은 유지하세요. 나중에 버전을 제거하려면 해당 버전을 설치한 관리자의 제거 명령을 사용하고, 먼저 그 버전에 의존하는 프로젝트가 없는지 확인하세요.

Bundler가 활성 Ruby 버전을 바꾸나요?

아니요. Gemfile의 ruby 선언을 통해 Bundler는 활성 인터프리터가 프로젝트 요구 사항을 충족하는지 확인합니다. 버전 관리자로 Ruby를 설치하고 선택한 다음 bundle install을 실행하세요.