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/ — 정적 파일 (에러 페이지 등)
핵심 포인트
app/models/ — 데이터 모델과 비즈니스 로직 (User, Post, Comment 등)
app/controllers/ — HTTP 요청 처리 (PostsController, UsersController 등)
app/views/ — HTML 템플릿 (ERB 파일, 컨트롤러명/액션명.html.erb)
config/routes.rb — URL 라우팅 규칙 정의
db/migrate/ — 데이터베이스 스키마 변경 이력 (타임스탬프_설명.rb)
spec/ 또는 test/ — 테스트 코드 (모델 spec, 컨트롤러 spec 등)
장점
- ✓ 역할별로 명확하게 분리
- ✓ 어디에 어떤 코드가 있는지 예측 가능
- ✓ rails generate가 자동으로 올바른 위치에 파일 생성
- ✓ Rails 프로젝트 간 구조 일관성
단점
- ✗ 디렉토리가 많아 처음에는 압도적
- ✗ 대규모 프로젝트에서 app/models/ 등이 비대해질 수 있음
- ✗ 네임스페이스 구조가 복잡해지면 경로가 길어짐