Ruby on Rails는 단순한 웹 프레임워크가 아닙니다.
그 안에는 생산성을 극대화하고, 아름다운 코드를 지향하는 철학이 녹아있어요.
그 중심에는 바로 Convention over Configuration이라는 개념이 자리잡고 있죠.
이번 글에서는 Rails를 움직이는 이 철학이 무엇인지, 왜 개발자에게 중요한지, 실제 코드에서 어떻게 구현되는지를 알아봅니다.
🎯 Convention over Configuration이란?
이 개념을 직역하면 "설정보다 관례"입니다.
즉, Rails는 개발자가 명시적인 설정을 하지 않아도 합리적인 기본값(Default)을 제공해주는 방식이에요.
Rails는 이렇게 말하죠:
"우리가 추천하는 방식대로 만든다면, 설정 파일은 거의 필요 없을 거예요."
📦 예시로 보는 Rails의 관례
1. 파일명과 클래스명
# app/models/user.rb
class User < ApplicationRecord
end
이 파일은 자동으로 users
테이블과 연결됩니다.
Rails는 파일명, 클래스명, 테이블명을 관례적으로 매칭하므로 설정할 필요가 없습니다.
2. 컨트롤러와 뷰
# app/controllers/posts_controller.rb
def index
@posts = Post.all
end
# app/views/posts/index.html.erb
<% @posts.each do |post| %>
<p><%= post.title %></p>
<% end %>
index 액션은 index.html.erb
를 자동으로 렌더링합니다. 명시적으로 render
를 호출하지 않아도 돼요.
3. RESTful한 라우팅
resources :articles
이 한 줄로 다음과 같은 7가지 라우트가 자동으로 생성됩니다:
- GET /articles
- GET /articles/:id
- GET /articles/new
- POST /articles
- GET /articles/:id/edit
- PATCH /articles/:id
- DELETE /articles/:id
이 모든 라우트는 ArticlesController
와 자연스럽게 연결됩니다.
💡 왜 이런 철학이 중요한가요?
- 생산성 향상: 반복되는 설정 작업을 줄일 수 있어요.
- 개발 속도 증가: 기본값에 따라 구조만 맞춰도 바로 개발 가능
- 일관된 코드 스타일: 모든 Rails 앱이 비슷한 구조를 가지므로 협업이 쉬워짐
- 실수를 줄임: 설정 파일이 줄어들수록 에러 가능성도 낮아짐
⚙️ 반례: 내가 직접 설정하고 싶을 땐?
Rails는 필요하다면 언제든 관례를 무시하고 설정
할 수 있는 유연함도 제공합니다.
예시: 테이블 이름 커스터마이징
class Member < ApplicationRecord
self.table_name = "users_data"
end
이렇게 하면 users_data
테이블을 대상으로 모델이 동작하게 됩니다.
🧘♀️ 철학이 만들어내는 개발자 경험
Rails를 처음 접했을 때는 마치 "마법 같다"는 표현이 어울릴 정도로 많은 것들이 자동으로 이루어집니다.
하지만 그 마법 뒤에는 깊이 있는 철학과 오랜 시간 다듬어진 관례가 있어요.
Convention over Configuration은 단순한 코딩 스타일이 아니라, Rails라는 프레임워크를 이루는 핵심 정신</strong입니다.
📝 마치며
개발은 단순히 코드를 짜는 행위가 아니라, 가장 적은 노력으로 가장 많은 가치를 만들어내는 일</strong입니다.
Rails의 Convention over Configuration은 그 철학을 고스란히 담고 있죠.
이제 여러분도 Rails가 왜 “개발자 친화적인 프레임워크”인지, 조금은 느껴지셨을 거예요.
다음 글에서는 Rails의 또 다른 정신인 DRY(Don’t Repeat Yourself) 원칙과 함께, 재사용 가능한 코드 구조를 이야기해볼게요. 🚀
'Ruby On Rails' 카테고리의 다른 글
파일 업로드 구현 — ActiveStorage와 Cloudinary 활용하기 (1) | 2025.07.15 |
---|---|
Devise로 로그인 기능 구현하기 — 인증은 쉽게, 안전하게 (0) | 2025.07.13 |
Partial, Layout, Helper — 뷰를 깔끔하게 정리하는 기술 (2) | 2025.07.11 |
Validation & Callback — 데이터의 품질을 지키는 방법 (2) | 2025.07.10 |
마이그레이션과 스키마 변화 — 안전하게 DB 구조 바꾸기 (1) | 2025.07.09 |