Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

Ruby on Rails 스캐폴딩(Scaffolding) 완벽 가이드: 개념부터 실전 사용법까지

Rails를 배우다 보면 애플리케이션을 시작하기 위해 "스캐폴드(scaffold)"를 만들어야 한다는 이야기를 자주 접하게 됩니다.

방법은 아주 간단합니다. rails g scaffold 명령어 하나면 충분하니까요.

그런데 스캐폴딩(scaffolding)이란 정확히 무엇일까요?

"스캐폴딩은 건물, 교량 등 인공 구조물의 건설, 유지보수 및 수리 작업을 돕기 위해 작업 인부를 지원하는 임시 구조물입니다." – 위키백과

이 개념을 Rails에 비유하면 다음과 같습니다

스캐폴드는 Rails 프로젝트의 기본 골격을 이루는 파일들을 자동으로 생성해 주는 기능입니다.

생성되는 파일은 다음과 같습니다

  • 컨트롤러(Controller)
  • 모델(Model)
  • 표준 컨트롤러 액션(index, edit, show, new)에 대응하는 뷰(View)
  • 새로운 라우트(Route)
  • 데이터베이스를 준비하는 마이그레이션(Migration)

실제 예제를 통해 살펴보겠습니다!

Rails 스캐폴드 명령어 사용 방법

예를 들어 책 소개 웹사이트 프로젝트를 스캐폴딩한다면 아래와 같이 입력하면 됩니다.

rails g scaffold books

명령어를 실행하면 생성되는 파일들의 목록이 화면에 쭉 출력됩니다.

위 예제에서 생성되는 것들

  • BooksController 컨트롤러
  • Book 모델
  • config/routes.rb 파일에 추가되는 resources :books 라우트
  • 테스트 관련 파일들
  • app/views/books 디렉터리 아래의 뷰 파일 5개

네, 생각보다 많은 파일이 한 번에 만들어집니다.

스캐폴딩 직후 실수했다 싶다면 다음 명령어로 되돌릴 수 있습니다.

rails d scaffold books

여기서 "d"는 "destroy(삭제)"의 약자입니다.

단, 이 명령은 스캐폴딩으로 생성된 파일을 삭제한다는 점을 꼭 기억하세요.

다음 단계

스캐폴드 코드를 사용하기 전에 먼저 마이그레이션을 실행해 데이터베이스 스키마를 업데이트해야 합니다.

rails db:migrate 명령어를 실행하세요.

오류 메시지가 나타나지 않는다면 준비 완료입니다! 새 Rails 애플리케이션의 기본 구조가 마련되었거나, 새로운 모델·뷰·컨트롤러가 필요한 신규 기능의 기반을 갖춘 것입니다.

이제 서버를 실행해 볼까요?

rails server 명령어를 실행한 뒤, 브라우저에서 localhost:3000/books에 접속하면 결과를 바로 확인할 수 있습니다!

추가 필드와 함께 스캐폴딩하기

기본 설정으로 스캐폴딩을 하면 모델에는 타임스탬프(timestamp) 필드만 생성됩니다. 즉, 책(또는 작업 중인 어떤 모델이든)에 대해 기록할 수 있는 정보는 생성 시각과 수정 시각뿐이라는 뜻입니다.

추가 필드를 포함해 스캐폴딩하는 방법은 다음과 같습니다

rails g scaffold books title:string author:string publication_year:integer

이렇게 생성하면 제목(title), 저자(author), 출판 연도(publication_year)라는 3개의 필드를 사용할 수 있습니다.

타임스탬프만 있는 것보다 훨씬 실용적이죠.

참고로, 이 문법은 rails g migration으로 마이그레이션을 생성할 때도 동일하게 사용됩니다.

특정 컴포넌트만 골라서 생성하기

스캐폴딩은 당장 필요하지 않거나 원치 않는 파일들까지 한꺼번에 만들어 줍니다.

하지만 Rails는 친절해서, 컨트롤러처럼 개별 컴포넌트만 따로 생성할 수도 있습니다. rails g(g는 generate의 약자) 명령어를 사용하면 됩니다.

예시

  • rails g controller Fruit — 컨트롤러 생성
  • rails g model Fruit name:string color:string — 모델 + 마이그레이션 생성
  • rails g migration CreateBook title:string year:integer — 마이그레이션만 생성

스캐폴딩 명령어를 사용하는 큰 장점 중 하나는 모든 파일이 올바른 네이밍 규칙(naming convention)에 맞게 자동 생성된다는 점입니다. 덕분에 이상한 오류 메시지를 피할 수 있고, 파일을 일일이 손으로 만드는 수고도 덜 수 있습니다.

참고로...

사용하지 않을 자동 생성 파일은 삭제하는 것이 좋은 습관으로 여겨집니다. "g controller" 같은 제너레이터를 실행한 후에는 생성된 파일 목록을 꼼꼼히 확인하고 불필요한 파일은 정리하세요.

마무리

지금까지 Ruby on Rails의 스캐폴딩에 대해 알아봤습니다. 이제 새 Rails 애플리케이션을 빠르게 시작해 연습해 볼 수 있습니다.

Rails에 익숙해지면 스캐폴딩 없이 직접 코드를 작성하게 되겠지만, 필요할 때마다 개별 컨트롤러, 모델, 뷰 파일을 생성하는 기능은 계속 유용하게 활용할 수 있습니다.

읽어주셔서 감사합니다! 🙂