2015년 8월 22일 토요일

Gem 추가하기 과정


루비 온 레일즈 스터디를 하면서 매번 드는 생각은 얼마나 툴에 익숙해져야 이 선택에 대한 효용을 피부로 느낄수 있을까 하는 것이다.

십수년전 php를 이용해 홈페이지를 만들어 운영해보았지만 다시 웹으로 무언가를 해보기 위해 많은 언어와 CMS 중에서 선택한 것이 루비온 레일즈였다. 아직 Gem 사이트에 공유되어 있는 라이브러리들이 그림의 떡으로 느껴지는 상황이지만 언젠가는 그것들을 이용해 내가 원하는 사이트와 애플리케이션을 뚝딱 뚝딱 만들어낼 수 있는 시간이 올것을 기대한다.

지금 생각으로는 확실히 php보다 익히기 힘들다.

레일즈 플랫폼에서는 Gem이라는 패키지형태의 라이브러리들을 제공한다. gem은 각각  하나의 기능들을 제공하게 되는데 하나의 사이트를 만들려면 기본적으로 게시판, 계정관리, 이미지 관리 등의 기능을 제공하는 Gem들을 설치하고 설치한 Gem들을 수정하여 마이그레이션하는 과정들을 거치게 된다. 대략 기능 하나를 추가하기 위해 다음의 과정들을 거치게 된다.
  1. 추가할 기능에 대해 Gem을 검색하고 최적의 Gem을 선택한다.
  2. Gem을 선택했으면 해당 Gem을 Gemfile에 추가하고
    bin/bundle install 명령을 이용해 gem을 설치한다.
  3. 기존 DB와 연관되어 DB 변경이 필요한 경우 DB migration 과정이 필요하다. 이때는 db 스키마를 생성하고 변경하는 마이그레이션 파일을 생성한다. 제공되는 마이그레이션 파일을 설치하는 것으로 끝나는 경우도 있다.
  4. DB 마이그레이션을 수행한다.
    bin/rake db:migrate
  5. 3에서 수행한 작업과 관련하여 연관된 Gem이 있다면 해당 모델 클래스 파일을 수정하여 연관을 맺어준다.
  6. 사용자 입력이 필요한 경우 form 데이터를 전달받을 수 있도록 controller 파일을 수정한다.
  7. 실제 사용자에게 입력 폼을 제공하거나 전달받은 내용을 처리한 결과를 뿌려주기 위해 views 디렉토리에 있는 파일들을 수정해준다.
모델(Models)
모델은 어플리케이션의 정보(data)와 데이터를 다루는 규칙들을 의미한다. 레일즈의 경우, 모델은 주로 데이터베이스 테이블과 상호작용하는 규칙들을 관리한다. 대부분의 경우에 데이터베이스의 하나의 테이블은 애플리케이션의 하나의 모델과 대응된다. 대부분의 비즈니스 로직들은 모델에 집중된다.

뷰(Views)
뷰는 애플리케이션의 유저 인터페이스를 의미한다. 레일즈에서 뷰는 주로 데이터 표현에 관련된 루비 코드가 삽입되어 있는 html 파일이다. 뷰는 데이털르 웹 브라우저나 다른 기기에서 데이터를 제공하는 일을 담당한다.

컨트롤러(Controller)
컨트롤러는 모델과 뷰를 "연결"하는 역할을 한다. 레일즈에서 컨트롤러는 웹브라우저의 요청을 받아서, 모델을 통해 데이터를 조회하여, 출력을 위해 뷰에게 데이터를 넘겨준다.


댓글 없음: