[Ruby on Rails] 시작하기 1

LeeHanna·2021년 4월 21일
1

RoR

목록 보기
1/5
post-thumbnail

[참조] https://rubykr.github.io/rails_guides/index.html

1. Ruby on Rails

  • 루비 : 순수 객체지향 프로그래밍 언어
  • 레일즈 : 루비 프로그램 언어에서 동작하는 웹 어플리케이션 프레임워크
  • 레일즈의 철학
    - DRY ("Don't Repeat Yourself")
    : 같은 코드의 반복은 없어야 함.
    - 설정 보다는 관습
    : 원하는 기능들에 대해 일정한 가정을 바탕으로 해결책을 제공하여 작은 단위의 끝없는 설정 파일을 줄여줌.
    - REST는 웹 어플리케이션의 최고의 패턴
    : 리소스와 표준 HTTP 요청 (HTTP verb)에 적합한 웹어플리케이션 개발은 가장 빠른 방법

2. MVC 아키텍처

rails에서는 MVC 패턴을 디자인 패턴으로 채택했다.

  • 모델(Models)
    : 어플리케이션의 정보와 데이터를 다루는 규칙, 하나의 표본이자 데이터베이스

-> 레일즈의 경우, 모델은 주로 데이터베이스 테이블과 상호 작용하는 규칙들을 관리
데이터베이스의 하나의 테이블을 어플리케이션의 하나의 모델과 대응, 대부분의 비즈니스 로직은 모델에 집중

  • 뷰(Views)
    : 뷰는 어플리케이션의 유저 인터페이스를 의미, 클라이언트가 눈으로 보는 것

-> 레일즈의 경우, 뷰는 주로 데이터 표현에 관련된 루비 코드가 삽입되어 있는 HTML 파일, 데이터를 웹 브라우저나 다른 기기에게 데이터를 제공하는 일을 담당

  • 컨트롤러(Controllers)
    : 컨트롤러는 모델과 뷰를 "연결"하는 역할

-> 레일즈의 경우, 컨트롤러는 웹브라우저의 요청 받아 모델을 통해서 데이터를 조회하여 출력을 위해 뷰에게 데이터를 넘기는 액션들의 집합

3. 레일즈의 컴포넌트

rails는 MVC 패턴에 의거하여 움직이며 이 패턴을 지원하기 위해 다양한 요소를 제공해준다.

  • Action Pack
    • Action Controller
    • Action Dispatch
    • Action View
  • Action Mailer
  • Action Dispatch
  • Action View
  • Action Dispatch
  • Action Mailer
  • Active Model
  • Active Record
  • Active Resource
  • Active Support
  • Railties

3.1 액션 팩 (Action Pack)

액션 컨트롤러와 액션 뷰를 포함하는 잼
"MVC" 에서 "VC" 부분이다.

3.2 액션 컨트롤러 (Action Controller)

액션 컨트롤러는 레일즈 어플리케이션에서 컨트롤러를 담당하는 컴포넌트
액션 컨트롤러 프레임워크는 레일즈 어플리케이션으로 들어오는 요청을 처리, 파라미터 추출, 의도된 액션으로 전송한다.
액션 컨트롤러는 세션관리, 템플릿 렌더링, 리다이렉트 관리 서비스 포함한다.

3.3 액션 뷰 (Action View)

액션 뷰는 레일즈 어플리케이션의 뷰를 관리
기본적으로 HTML, XML을 만들 수 있다.
액션 뷰는 템플릿 렌더링, 중첩 폼, 조각 템플릿, AJAX 지원을 관리한다.

3.4 액션 디스패치(Action Dispatch)

액션 디스패치는 웹의 요청을 받아들여서 원하는 곳으로 연결 (다른 Rack 어플리케이션과 동일)

3.5 액션 메일러(Action Mailer)

액션 메일러는 내장된 이메일 서비스 프레임워크, 액션 메일러를 이용해 유연한 템플릿을 기반으로 간단한 텍스트 부터 복잡한 메일을 처리한다.

3.6 액티브 모델(Active Model)

액티브 모델은 액션 팩 서비스와 ORM 젬과 인터페이스를 정의 (ORM으로, 액티브 레코드가 있음)

3.7 액티브 레코드(Active Record)

액티브 레코드는 레일즈 어플리케이션에서 모델의 기초, 액티브 레코드는 데이터베이스 추상화와 기본 CRUD 기능, 고급 검색 능력객체들 간의 관계를 정의하는 기능을 제공한다.

3.8 액티브 리소스(Active Resource)

액티브 리소스는 비즈니스 객체와 RESTful 웹 서비스간의 연결 관리를 위한 프레임워크
액티브 리소스는 웹 기반의 자원을 로컬 객체의 CRUD 처럼 매핑시킨다.

3.9 액티브 서포트(Active Support)

액티브 서포트는 레일즈가 사용하는 유틸리티 클래스와 표준 루비 확장 모음이다.

3.10 레일티즈(Railties)

레일티즈는 새로운 레일즈 어플리케이션을 만들고 다양한 프레임워크와 플러그인을 이어주는 레일즈의 핵심 코드이다.

4. REST

REST(Representational State Transfer)는RESTful 아키텍처의 근간이다.
레일즈에 존재하는 REST 두가지 중요한 원리는 다음과 같다.

  • 자원 표현을 위해 자원 식별자 사용 ( ex. url )
  • 시스템 컴포넌트 간에 자원 상태 교환

예를 들어, 레일즈 어플리케이션에서 요청은 다음과 같다.

$ DELETE /photo/17

이것은 photo 리소스 ID 17번 참조 후, 원하는 액션은 삭제하라는 의미이다.

REST는 웹 어플리케이션의 아키텍쳐상 자연스러운 형태이고, 레일즈는 어플리케이션을 RESTful 복잡성과 브라우저의 변덕스러운 요청을 간단하게 처리해 준다.

5. Gem과 Bundler

레일즈가 프레임워크라면, 잼은 라이브러리이다.
즉, 필요한 기능이 있을 때 추가해서 사용할 수 있다.

추가로 rubygem(Gem)이란 루비에서 지원하는 패키지 시스템으로 필요 프로그램을 관리할 수 있는 프로그램 이다.

쉽게 말해 루비 프로그래머는 gem을 이용해 간단하게 원하는 프로그램을 설치할 수 있으며, 개발한 프로그램을 간단하게 배포할 수 있다.

5.1 Gem 명령어

Gem 명령어는 gem으로 시작한다.

인스톨시에는

$ gem install 패키지명

업데이트시에는

$ gem update 패키지명

삭제시에는

$ gem uninstall 패키지명

레일즈는 gem을 통해 의존성 프로그램을 설치한다.

그 후 rails new _appname_ 명령어 실행 시 레일즈 app이 해당 이름으로 설치되고, 최상위 폴더에 Gemfile이 생성되는데 여기 필요 프로그램들을 기술하면 알아서 설치를 해준다.

그러나, 이 필요프로그램들을 일일이 설치할 수 없기에 한번에 해결해주는 프로그램이 bundler 이다.

bundler를 통해 rails app에서 필요한 프로그램들을 설치하여 배치하면 의존성 문제를 쉽게 처리할 수 있다.

즉, gemfile이 bundle에서 사용하는 의존성 파일이고, bundle은 gemfile에 정의된 gem들의 의존성을 관리해 사용할 수 있게 해주는 명령어이다.

0개의 댓글