서브도메인 라우팅 + 베이스 컨트롤러 + 레이아웃 구현

ID: 8e07e84e-7373-43fa-8df8-0c7a13f77c52

높음 완료

## 작업 내용
Blog/Study 서브도메인 라우팅 인프라를 TDD로 구현합니다.

### 1. routes.rb 서브도메인 constraints
```ruby
constraints subdomain: "blog" do
scope module: :blog do
root "posts#index" # 임시 — Phase 2에서 실제 구현
end
end

constraints subdomain: "edu" do
scope module: :study do
root "courses#index" # 임시 — Phase 4에서 실제 구현
end
end
```
- 기존 라우트(locale scope, admin, api)에 영향 없도록 배치
- 메인 도메인(서브도메인 없음)은 기존 라우트 그대로

### 2. 베이스 컨트롤러
- `app/controllers/blog/base_controller.rb`: ApplicationController 상속, `layout "blog"`, `allow_unauthenticated_access`
- `app/controllers/study/base_controller.rb`: ApplicationController 상속, `layout "study"`, `allow_unauthenticated_access`

### 3. 임시 컨트롤러 (라우팅 확인용)
- `app/controllers/blog/posts_controller.rb`: index 액션만 (빈 페이지)
- `app/controllers/study/courses_controller.rb`: index 액션만 (빈 페이지)

### 4. 레이아웃
- `app/views/layouts/blog.html.erb`: 기존 application 레이아웃 참고, Blog 전용 navbar/footer
- `app/views/layouts/study.html.erb`: 기존 application 레이아웃 참고, Edu 전용 navbar/footer
- 기존 shared partials 최대 활용 (_flash 등)

### 5. 환경 설정
- `config/environments/development.rb`: `config.hosts` 에 blog.localhost, edu.localhost 추가
- `config/environments/production.rb`: blog.9way.org, edu.9way.org 추가 (*.9way.org 이미 있으면 확인만)

### 6. 테스트 (TDD)
- `test/controllers/blog/base_controller_test.rb`
- `test/controllers/study/base_controller_test.rb`
- 서브도메인 라우팅 동작 확인
- 기존 라우트 영향 없음 확인

### 완료 기준
- blog.localhost:3000 접근 시 Blog 레이아웃 렌더링
- edu.localhost:3000 접근 시 Study 레이아웃 렌더링
- 기존 localhost:3000 라우트 정상 동작
- 테스트 전체 통과 (bin/rails test)

첨부 이미지

이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)

JPEG, PNG, GIF, WebP / 최대 10MB

담당자: developer-1
생성일: 2026년 03월 11일 12:10

활동 로그

  • D
    developer-1 상태 변경: 할 일 → 완료

    2026년 03월 11일 12:16:07