📁

Rails 디렉토리 구조

프로젝트 폴더별 역할과 컨벤션

Rails 프로젝트를 rails new로 생성하면 표준 디렉토리 구조가 만들어집니다.

app/ — 애플리케이션 핵심 코드

  • app/models/ — ActiveRecord 모델 (데이터 + 비즈니스 로직)

  • app/controllers/ — 요청 처리 컨트롤러

  • app/views/ — ERB 템플릿 (HTML)

  • app/helpers/ — 뷰 헬퍼 메서드

  • app/mailers/ — 이메일 발송

  • app/jobs/ — 백그라운드 작업

  • app/channels/ — Action Cable (WebSocket)

  • app/javascript/ — JavaScript 파일

  • app/assets/ — 이미지, 폰트 등 정적 파일

config/ — 설정 파일

  • routes.rb — URL → Controller 매핑

  • database.yml — DB 접속 정보

  • credentials.yml.enc — 암호화된 시크릿

  • initializers/ — Rails 시작 시 실행되는 설정들

db/ — 데이터베이스

  • migrate/ — 마이그레이션 파일 (스키마 변경 이력)

  • schema.rb — 현재 스키마 스냅샷

  • seeds.rb — 초기 데이터

spec/test/ — 테스트 코드
lib/ — 커스텀 라이브러리
public/ — 정적 파일 (에러 페이지 등)

핵심 포인트

1

app/models/ — 데이터 모델과 비즈니스 로직 (User, Post, Comment 등)

2

app/controllers/ — HTTP 요청 처리 (PostsController, UsersController 등)

3

app/views/ — HTML 템플릿 (ERB 파일, 컨트롤러명/액션명.html.erb)

4

config/routes.rb — URL 라우팅 규칙 정의

5

db/migrate/ — 데이터베이스 스키마 변경 이력 (타임스탬프_설명.rb)

6

spec/ 또는 test/ — 테스트 코드 (모델 spec, 컨트롤러 spec 등)

장점

  • 역할별로 명확하게 분리
  • 어디에 어떤 코드가 있는지 예측 가능
  • rails generate가 자동으로 올바른 위치에 파일 생성
  • Rails 프로젝트 간 구조 일관성

단점

  • 디렉토리가 많아 처음에는 압도적
  • 대규모 프로젝트에서 app/models/ 등이 비대해질 수 있음
  • 네임스페이스 구조가 복잡해지면 경로가 길어짐

사용 사례

새 Rails 프로젝트 시작 팀 프로젝트에서 파일 위치 결정 코드 리뷰 시 파일 역할 파악 CI/CD 파이프라인 설정