Rev. 2.73

"a태그를 a태그라 쓰지 못하고 img태그를 img태그라 쓰지 못하니,
심장이 터지고 애간장이 녹 내릴지라. 이 어찌 통한치 않으리오."
ㅡ,.ㅡ;

모델- Model
Rails 애플리케이션의 모델은 이 애플리케이션이 사용하는 기반 데이터베이스이다. 사실, 많은 경우, Rails 애플리케이션은 관계형 데이터베이스 관리 시스템(RDBMS)에서 지정한 방식으로 데이터 조작을 수행하는 수단이다.

Rails의 중앙 컴포넌트는 ActiveRecord 클래스이다. 이것은 관계형 테이블을 Ruby 객체들로 매핑한다. 거기에서 데이터가 컨트롤러에 의해 조작되고 뷰에서 나타난다. Rails 애플리케이션은 유비쿼터스 MySQL 데이터베이스를 사용하지만, 바인딩은 수 많은 기타 RDBMS (IBM® DB2®포함)에도 존재한다.

원한다면, Ruby코드를 추가하여 애플리케이션 모델 내에서 추가 밸리데이션을 수행하고, 데이터 관계를 적용하거나 기타 액션들을 실행한다. 애플리케이션의 app/models/ 디렉토리에 있는 Ruby 파일들은 ActiveRecord의 다양한 밸리데이션 메서드를 호출할 수 있다. 하지만 이 모델 코드를 스텁으로서 남겨두고 데이터를 저장하고 있는 RDBMS에 의존한다. 예를 들어, 이 예제에서 내가 구현하는 애플리케이션에는(적어도 초기에는) 뼈대 모델 코드만 포함된다.

뷰 - View
Rails 뷰는 Ruby 코드를 저장한 곳에 있다. Rails에는 순수 HTML을 임베디드 Ruby 코드와 결합하는 .rhtml 파일용 템플릿 언어를 포함하고 있다. Rails 애플리케이션 스크린 외형은 일반적으로 CSS 스타일시트로 제어된다. .rhtml 포맷은 HTML에서 발전한 것이다. 실제로 HTML도 유효한 RHTML 템플릿이 될 수 있지만 스크립팅 제어 외에는 이점이 별로 없다.

RHTML은 진정한 템플릿 포맷이다. HTML에 코드를 삽입하는 단순한 방식만이 아니다. 보다 강력한 접근 방식이다. PHP에 익숙하다면 PHP와 Smarty 템플릿을 비교해보라. 임베디드 스크립팅은 코드와 인터프리팅 되지 않은 HTML을 그저 섞기만 한다. 클라이언트에게 무엇인가를 보여줄 때 print 문장을 만들어내는 것은 여전히 코드에서 수행하고 있다.

반대로 템플릿 엔진은 커스텀 세트의 태그를 HTML에 추가한다. 조건, 루프, 기타 로직을 강화된 HTML 마크업의 일부로서 나타낼 수 있다.

컨트롤러 - Controller
컨트롤러는 추상 형식으로 애플리케이션 로직을 수행한다. 애플리케이션의 app/controllers/ 디렉토리에 있는 Ruby 스크립트는 모델 데이터를 변수에 로딩하고 이를 저장하여 이를 조작한다. 하지만 컨트롤러는 데이터가 구체적으로 표현되고 사용자에 의해 입력되는 방식과는 관계가 없다. 일반적인 MVC 다이어그램에서 같은 컨트롤러와 다중 인터랙션이 허용된다. 원시 GUI, 웹 인터페이스, 시각 장애자를 위한 스피치 인터페이스는 모두 같은 컨트롤러와 인터랙팅한다.

하지만 Rails가 그렇게 일반적인 것은 아니다. 대신 웹 페이지 내에 데이터를 제공하고 모으는데 집중한다. 웹 페이지의 레이아웃(색상, 폰트, 테이블, 스타일시트)을 수정할 수 있다.

코드 만들기
Rails가 제공하는 툴은 기본적으로 코드 생성기 세트이다. 나는 워크스페이스와 IDE(Integrated Development Enviroment)를 사용해야 하는 개발 환경 보다 이 방식을 훨씬 좋아한다. 직접적인 프로그래밍 작업을 줄여준다. 스카폴딩(scaffolding)을 무료로 제공하여 직접 코딩하는 부분이 줄어든다.

스카폴딩(scaffolding)은 Rails의 기본 개념이다. 매우 간단한 애플리케이션들의 경우, Rails가 동적으로 클라이언트 HTML 페이지를 만들기 때문에 직접 코딩하지 않아도 된다. 코드 생성의 첫 번째 단계는 미가공 스카폴딩을 만드는 것이다. 그런 다음 커스터마이징 할 수 있는 보다 구체적인 컨트롤러, 뷰, 모델을 만들 수 있다. 하지만 시작부터 그렇게 많은 것을 만들 필요는 없다.

Rails는 고정되고 일반적인 파일 구성에 의존하지만 이 구성은 비교적 융통성이 없다. 다른 파일 및 코드 구성을 실행하려고 한다면 Rails 환경과의 사투를 벌여야 한다. Rails가 제공하는 구성을 따르지 않는 이유가 없다. 프레임웍을 처음부터 디자인한다면 디렉토리 이름과 구조가 여러분이 선택했던 것과 완전히 다르다.

Rails는 빠른 웹 애플리케이션 개발을 보장한다. 완벽한 프레임웍에는 웹 기반 애플리케이션에 가장 많이 사용되는 액션들을 수행하는 매우 유용한 클래스들과 메서드가 포함되어 있다. 무엇보다도 Rails는 우리가 필요로 하는 모든 지원 코드를 갖추었기 때문에 완전한 "Rails 방식"이 가능하다. 이는 다른 툴킷과 프레임웍에 월등히 앞서는 부분이기도 하다.

중급 실습 : Ruby On Rails로 웹 어플리케이션 구현하기

겨우 컨트롤러가 돌아가는 방식을 감 잡았습니다. 뷰의 link_to 명령과 맞물려 돌아가는 컨트롤러에 온클릭(onclick)이벤트를 쑤셔박는데 성공했습니다. 다소 생소하지만 그 심플함에 치를 떨었습니다. a 또는 img태그를 대신 그려주는 멋진 Rails입니다. :)

Comments