Rails 핵심 개발 의존성 설치

이 가이드는 Ruby on Rails 핵심 개발을 위한 환경 설정 방법을 다룹니다.

이 가이드를 읽고 나면 다음을 알 수 있습니다:

  • Rails 개발을 위한 컴퓨터 설정 방법

환경 설정을 위한 다른 방법

로컬 컴퓨터에서 Rails 개발을 하고 싶지 않다면, Codespaces, VS Code Remote Plugin 또는 rails-dev-box를 사용할 수 있습니다. 이러한 옵션에 대해 자세히 알아보려면 여기를 참고하세요.

로컬 개발

로컬 컴퓨터에서 Ruby on Rails를 개발하려면 아래 단계를 따르세요.

Git 설치

Ruby on Rails는 Git을 소스 코드 관리에 사용합니다. Git 홈페이지에서 설치 지침을 확인할 수 있습니다. Git 사용법에 대한 다양한 온라인 자료가 있습니다.

Ruby on Rails 저장소 복제

Ruby on Rails 소스 코드를 다운로드할 폴더로 이동(폴더 내에 rails 하위 디렉토리가 생성됨)한 후 다음을 실행하세요:

$ git clone https://github.com/rails/rails.git
$ cd rails

추가 도구 및 서비스 설치

일부 Rails 테스트에는 추가 도구가 필요하므로 해당 테스트를 실행하기 전에 이를 설치해야 합니다.

각 gem의 추가 종속성은 다음과 같습니다:

  • Action Cable은 Redis가 필요합니다
  • Active Record는 SQLite3, MySQL, PostgreSQL이 필요합니다
  • Active Storage는 Yarn(Node.js 필요), ImageMagick, libvips, FFmpeg, muPDF, Poppler, macOS의 경우 XQuartz가 필요합니다
  • Active Support는 memcached와 Redis가 필요합니다
  • Railties는 JavaScript 런타임 환경(Node.js 설치)이 필요합니다

변경할 gem의 전체 기능을 테스트하려면 필요한 모든 서비스를 설치해야 합니다. macOS, Ubuntu, Fedora/CentOS, Arch Linux, FreeBSD에서의 설치 방법은 아래에 자세히 설명되어 있습니다.

참고: Redis 문서에서는 패키지 관리자를 통한 설치를 권장하지 않습니다. 소스에서 설치하고 서버를 시작하는 것이 간단하며 Redis 문서에 잘 설명되어 있습니다.

참고: Active Record 테스트는 최소 MySQL, PostgreSQL, SQLite3에서 통과해야 합니다. 어댑터 특정 변경 및 테스트가 아닌 경우, 단일 어댑터에 대해서만 테스트된 패치는 거부될 것입니다.

아래에서 다양한 운영 체제별로 추가 도구 설치 방법을 확인할 수 있습니다.

macOS

macOS에서는 Homebrew를 사용하여 모든 추가 도구를 설치할 수 있습니다.

모두 설치하려면 다음을 실행하세요:

$ brew bundle

그런 다음 설치된 각 서비스를 시작해야 합니다. 사용 가능한 모든 서비스를 보려면 다음을 실행하세요:

$ brew services list

그리고 각 서비스를 다음과 같이 시작할 수 있습니다:

$ brew services start mysql

mysql을 시작하려는 서비스 이름으로 바꾸세요.

잠재적 문제

이 섹션에서는 macOS에서 네이티브 확장을 번들링할 때 발생할 수 있는 잠재적 문제에 대해 설명합니다. 특히 로컬 개발에서 mysql2 gem을 번들링할 때 발생할 수 있습니다. 이 문서는 변경될 수 있으며 Apple이 개발자 환경을 변경함에 따라 잘못될 수 있습니다.

macOS에서 mysql2 gem을 컴파일하려면 다음이 필요합니다:

  1. openssl@1.1 설치(not openssl@3)
  2. openssl@1.1로 컴파일된 Ruby
  3. mysql2에 대한 컴파일러 플래그를 번들 구성에 설정

openssl@1.1openssl@3가 모두 설치된 경우, Rails에서 mysql2를 번들링하려면 Ruby가 openssl@1.1을 사용하도록 해야 합니다.

.bash_profile에서 PATHRUBY_CONFIGURE_OPTSopenssl@1.1을 가리키도록 설정하세요:

export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)"

~/.bundle/config에서 mysql2에 대해 다음을 설정하세요. BUNDLE_BUILD__MYSQL2에 대한 다른 항목은 삭제하세요:

BUNDLE_BUILD__MYSQL2: "--with-ldflags=-L/usr/local/opt/openssl@1.1/lib --with-cppflags=-L/usr/local/opt/openssl@1.1/include"

이러한 플래그를 설정하면 macOS 로컬 개발 환경을 작동시킬 수 있습니다.

Ubuntu

모두 설치하려면 다음을 실행하세요:

$ sudo apt-get update
$ sudo apt-get install sqlite3 libsqlite3-dev mysql-server libmysqlclient-dev postgresql postgresql-client postgresql-contrib libpq-dev redis-server memcached imagemagick ffmpeg mupdf mupdf-tools libxml2-dev libvips42 poppler-utils

# Yarn 설치
# Node.js가 설치되어 있지 않은 경우 이 명령어 사용
# ref: https://github.com/nodesource/distributions#installation-instructions
$ sudo mkdir -p /etc/apt/keyrings
$ curl --fail --silent --show-error --location https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
$ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
$ sudo apt-get update
$ sudo apt-get install -y nodejs

# Node.js 설치 후 yarn npm 패키지 설치
$ sudo npm install --global yarn

Fedora 또는 CentOS

모두 설치하려면 다음을 실행하세요:

$ sudo dnf install sqlite-devel sqlite-libs mysql-server mysql-devel postgresql-server postgresql-devel redis memcached ImageMagick ffmpeg mupdf libxml2-devel vips poppler-utils

# Yarn 설치
# Node.js가 설치되어 있지 않은 경우 이 명령어 사용
# ref: https://github.com/nodesource/distributions#installation-instructions-1
$ sudo dnf install https://rpm.nodesource.com/pub_20/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm -y
$ sudo dnf install nodejs -y --setopt=nodesource-nodejs.module_hotfixes=1

# Node.js 설치 후 yarn npm 패키지 설치
$ sudo npm install --global yarn

Arch Linux

모두 설치하려면 다음을 실행하세요:

$ sudo pacman -S sqlite mariadb libmariadbclient mariadb-clients postgresql postgresql-libs redis memcached imagemagick ffmpeg mupdf mupdf-tools poppler yarn libxml2 libvips poppler
$ sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
$ sudo systemctl start redis mariadb memcached

참고: Arch Linux를 사용하는 경우 MySQL이 더 이상 지원되지 않으므로 MariaDB를 사용해야 합니다(이 공지 참고).

FreeBSD

모두 설치하려면 다음을 실행하세요:

$ sudo pkg install sqlite3 mysql80-client mysql80-server postgresql11-client postgresql11-server memcached imagemagick6 ffmpeg mupdf yarn libxml2 vips poppler-utils
# portmaster databases/redis

또는 포트를 통해 모든 것을 설치할 수 있습니다(이 패키지는 databases 폴더에 있습니다).

참고: MySQL 설치 중 문제가 발생하면 MySQL 문서를 참고하세요.

Debian

모든 종속성을 설치하려면 다음을 실행하세요:

$ sudo apt-get install sqlite3 libsqlite3-dev default-mysql-server default-libmysqlclient-dev postgresql postgresql-client postgresql-contrib libpq-dev redis-server memcached imagemagick ffmpeg mupdf mupdf-tools libxml2-dev libvips42 poppler-utils

참고: Debian을 사용하는 경우 MariaDB가 기본 MySQL 서버이므로 차이가 있을 수 있습니다.

데이터베이스 구성

Active Record 테스트를 실행하려면 데이터베이스 엔진을 구성하는 추가 단계가 필요합니다.

PostgreSQL의 인증 방식이 다릅니다. Linux 또는 BSD에서 개발 환경을 설정하려면 다음을 실행하세요:

$ sudo -u postgres createuser --superuser $USER

macOS의 경우:

$ createuser --superuser $USER

참고: MySQL은 데이터베이스가 생성될 때 사용자를 생성합니다. 이 작업은 root 사용자에 암호가 없다고 가정합니다.

그런 다음 MySQL과 PostgreSQL에 대한 테스트 데이터베이스를 다음과 같이 생성해야 합니다:

$ cd activerecord
$ bundle exec rake db:create

각 데이터베이스 엔진에 대한 테스트 데이터베이스를 별도로 생성할 수도 있습니다:

$ cd activerecord
$ bundle exec rake db:mysql:build
$ bundle exec rake db:postgresql:build

그리고 데이터베이스를 삭제할 수 있습니다:

$ cd activerecord
$ bundle exec rake db:drop

참고: Rake 작업을 사용하여 테스트 데이터베이스를 생성하면 올바른 문자 집합과 정렬이 설정됩니다.

다른 데이터베이스를 사용하는 경우 activerecord/test/config.yml 또는 activerecord/test/config.example.yml 파일을 확인하여 기본 연결 정보를 확인하세요. activerecord/test/config.yml을 편집하여 로컬 컴퓨터의 다른 자격 증명을 제공할 수 있지만, 이러한 변경 사항은 Rails에 다시 푸시하지 않아야 합니다.

JavaScript 종속성 설치

Yarn을 설치한 경우 JavaScript 종속성을 설치해야 합니다:

$ yarn install

Gem 종속성 설치

Gems은 기본적으로 Ruby와 함께 제공되는 Bundler로 설치됩니다.

Rails의 Gemfile을 설치하려면 다음을 실행하세요:

$ bundle install

Active Record 테스트를 실행할 필요가 없는 경우 다음을 실행할 수 있습니다:

$ bundle install --without db

Rails에 기여하기

모든 설정이 완료되면 기여하는 방법을 읽어보세요.