Rails를 로컬에서만 실행하는 건 반쪽짜리 개발입니다.
진짜 세상에 보여주기 위해선 클라우드에 배포가 필요하죠.
오늘은 가장 쉽고 빠른 배포 플랫폼인 Heroku를 이용해 Rails 앱을 배포하는 과정을 정리해볼게요.
단 10분이면 여러분의 앱을 전 세계 누구나 볼 수 있게 됩니다. 준비되셨나요? 🚀
🔧 1. Heroku CLI 설치
먼저 [Heroku 공식 CLI](https://devcenter.heroku.com/articles/heroku-cli)를 설치합니다. macOS, Windows, Linux 모두 지원합니다.
$ brew tap heroku/brew && brew install heroku
$ heroku login
로그인 후 브라우저가 열리면 Heroku 계정으로 인증해주세요.
🗃️ 2. 앱 준비 (필수 수정)
1) Gemfile 수정
gem 'pg', '>= 1.1' # PostgreSQL 사용
gem 'rails_12factor', group: :production
sqlite3
는 Heroku에서 지원하지 않기 때문에 PostgreSQL로 바꿔야 해요.
2) production 환경 설정
# config/environments/production.rb
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
3) database.yml 수정
# config/database.yml
production:
url: <%= ENV['DATABASE_URL'] %>
4) master key 설정
$ EDITOR="code --wait" bin/rails credentials:edit
그리고 config/master.key
는 반드시 Git에 커밋하지 말고 heroku config:set
으로 등록해야 합니다.
🚀 3. Heroku 앱 생성 및 배포
$ heroku create my-rails-app-name
자동으로 https://my-rails-app-name.herokuapp.com
주소가 만들어집니다.
$ git push heroku main
배포가 끝나면 바로 앱을 열어볼 수 있어요:
$ heroku open
🗃️ 4. DB 마이그레이션
$ heroku run rails db:migrate
마이그레이션을 실행하지 않으면 테이블이 생성되지 않아 오류가 날 수 있어요.
📁 5. 정적 자산 컴파일 (옵션)
Rails 7+에서는 jsbundling-rails
혹은 importmap-rails
을 사용하는 경우 빌드 작업이 필요할 수 있어요.
$ heroku buildpacks:add --index 1 heroku/nodejs
$ heroku buildpacks:add --index 2 heroku/ruby
그리고 package.json에 "heroku-postbuild"
스크립트를 넣어줍니다.
"scripts": {
"heroku-postbuild": "esbuild app/javascript/*.* --bundle --outdir=app/assets/builds"
}
🔐 6. 환경변수 등록
$ heroku config:set RAILS_MASTER_KEY=your-master-key
Mailer 설정이나 API 키도 이 방식으로 등록할 수 있어요.
🎯 마치며
Heroku는 개발자에게 정말 친절한 배포 플랫폼입니다.
기본적인 설정만 마치면 Git push 한 번으로 배포가 끝나니까요.
프로토타입, MVP, 사이드 프로젝트 등에 아주 잘 어울리며, 무료 티어도 존재해 부담 없이 시작할 수 있어요.
'Ruby On Rails' 카테고리의 다른 글
Capistrano로 자동 배포 파이프라인 만들기 (2) | 2025.08.05 |
---|---|
Rails 앱 보안 점검 — CSRF, SQL Injection 막기 (2) | 2025.07.29 |
메일 발송 기능 구현 — ActionMailer와 Gmail SMTP 연동하기 (3) | 2025.07.24 |
댓글 기능 추가하기 — 모델 연관관계 완전 정복 (4) | 2025.07.22 |
관리자 페이지 만들기 — RailsAdmin vs ActiveAdmin (0) | 2025.07.17 |