발효홍삼
코딩하는 홍삼
발효홍삼
전체 방문자
오늘
어제
  • 분류 전체보기 (142)
    • PS (63)
      • 프로그래머스 (9)
      • 코드업 (10)
      • 백준 (43)
      • 알고스팟 (1)
    • Programming Language (11)
      • html_css (2)
      • java (0)
      • c,c++ (2)
      • vanillajs (2)
      • react (0)
      • vue.js (0)
      • angular.js (0)
      • electron (3)
      • 엄랭(Umjunsik-lang) (1)
      • F# (1)
      • Node.js (0)
      • Go (0)
    • knowledge (41)
      • algorithm (3)
      • data structure (1)
      • os (1)
      • ML (1)
      • math (31)
      • paper review (0)
      • IT-license (4)
    • Programming Guide (27)
      • React (1)
      • Electron (2)
      • CSS , SASS ( SCSS ) , Tailw.. (3)
      • Node.js (1)
      • Go (1)
      • Ruby on Rails (2)
      • R (1)
      • PHP (1)
      • Docker (1)
      • JSP (1)
      • C# (1)
      • Django (1)
      • Flask (1)
      • Dart (1)
      • Next.js (1)
      • Vue.js (1)
      • Unity (1)
      • React Native (0)
      • Flutter (3)
      • GraphQL (1)
      • MongoDB (1)
      • .NET (1)
      • RUST (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바
  • 미적분학
  • java
  • js
  • 출력
  • c++
  • 프로그래머스
  • cpp
  • nodejs
  • 수학
  • 기초100제
  • CSS
  • 파이썬
  • 알고리즘
  • JavaScript
  • 기초백제
  • 미분
  • 구현
  • 적분
  • 코드업
  • 정보처리기능사 필기
  • codeup
  • electron
  • 백준
  • HTML
  • C
  • LV1
  • 이산수학
  • Python
  • 정보처리기능사

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
발효홍삼

코딩하는 홍삼

Ruby on Rails 시작하기
Programming Guide/Ruby on Rails

Ruby on Rails 시작하기

2022. 12. 17. 00:47
728x90

What is Ruby on Rails?

  • Ruby : 순수 객체지향 프로그래밍 언어
  • Rails : Ruby 프로그램 언어에서 동작하는 웹 어플리케이션 프레임워크
  • Rails의 특징

     - DRY ( "Don't Repeat Yourself" ) : 같은 코드의 반복은 없어야 함. Rails는 사용자가 코드 작성 또는 설정 세팅을 반복하지 않도록 다양한 자동화 옵션을 제공한다.

     - 설정보다는 관습 : 원하는 기능들에 대해 일정한 가정을 바탕으로 해결책을 제공하여 끝없는 설정 파일을 줄여줌. 즉 Rails가 미리 제공하는 규칙을 지키며 개발한다면, 개발자는 필요한 개발 작업에만 집중할 수 있어 웹 서비스를 굉장히 빠르게 구현 가능하다.

     - MVC 패턴 : MVC 패턴은 Rails가 채택한 디자인 패턴으로, 이는 Model, View, Controller의 약자이다. MVC 패턴은 하나의 어플리케이션 또는 프로젝트를 구성할 때, 그 구성요소를 3가지 역할로 구분한 패턴이다.

     Model : 어플리케이션의 정보와 데이터를 다루는 규칙, 하나의 표본이자 데이터베이스

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

     View : 어플리케이션의 유저 인터페이스, 클라이언트가 눈으로 보는 것

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

     Controller : Model과 View를 "연결"하는 역할

     -> Rails의 경우, 웹 브라우저의 요청을 받아 Model을 통해서 데이터를 조회하여 출력을 위해 View에게 데이터를 넘기는 액션들의 집합

 

 Rails의 Component

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

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

- Action Pack ( 액션 팩 )

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

- Action Controller ( 액션 컨트롤러 )

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

- Action View ( 액션 뷰 )

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

- Action Dispatch ( 액션 디스패치 )

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

- Action Mailer ( 액션 메일러 )

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

- Active Model ( 액티브 모델 )

   액티브 모델은 액션 팩(Action Pack) 서비스와 ORM 젬과 인터페이스를 정의한다. 액티브 모델은 다른 ORM 프레임워크를 사용할 수 있게 한다.

- Active Record ( 액티브 레코드 )

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

- Active Resource ( 액티브 리소스 )

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

- Active Support ( 액티브 서포트 )

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

-Railties ( 레일티즈 )

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

 

REST

REST는 Representational State Transfer 를 의미하고 RESTful 아키텍쳐의 근간이 된다. Rails의 존재하는 두가지 중요한 REST 원리는 다음과 같다.

  1. 자원 표현을 위해 자원 식별자 사용 ( URL 등)
  2. 시스템 컴포넌트 간에 자원 상태 교환

예를 들어 Rails 어플리케이션에서의 요청은 다음과 같다.

DELETE /photos/17

위 예제는 photo 리소스 ID 17번을 참조 , 원하는 액션은 삭제라는 의미이. REST는 웹 어플리케이션의 아키텍쳐 상 자연스러운 형태이고, Rails는 어플리케이션을 RESTful 복잡성과 브라우저의 변덕스러운 요청에서 보호한다.

 

Quick Start

 프로젝트 시작하기

프로젝트 시작 명령어 : rails new [프로젝트 이름]
ex) rails new helloworld

  • 옵션 없이 DB를 만들면 기본 데이터베이스인 sqlite3로 설정 된다.
  • 다른 DB를 쓰려면 아래 DB 설정하기에 있는 명령어를 치면 된다.

DB 설정하기

  • DB를 mysql로 쓰려면
    rails new [프로젝트 이름] -d mysql 또는 rails new [프로젝트 이름] —database=mysql
  • DB를 postgresql로 쓰려면
    rails new [프로젝트 이름] -d postgressql 또는rails new [프로젝트이름] --database=postgresql
  • DB를 설치한 이후, config/database.yml파일을 수정해줘야 하고
    (포트번호 변경, 초기 비밀번호 설정 등 셋팅 필요),
    DB를 변경해 셋팅한 경우 gemfile도 수정해주어야 한다.
    => 이에 대한 자세한 내용은 postgresql DB 셋팅 또는 윈도우 postgresql DB셋팅 참고

 프로젝트 기본 폴더 구조

  • 프로젝트 시작 명령어를 치면 아래와 같은 디렉토리 구조가 만들어진다
    app/ 모델, 뷰, 컨트롤러 폴더를 가지고 있음
    bin/ 레일즈 실행에 관한 파일을 가지고 있음
    config/ 레일즈 라우터 db 등의 기본 설정 파일을 가지고 있음
    db/ db 스키마 파일을 가지고 있음
    lib/ 외부 라이브러리를 가지고 있음
    log/ 로그 파일을 가지고 있음
    public/ 정적 파일을 두는 디렉터리
    storage/ 업로드한 파일 저장하는 디렉터리
    test/ 테스트 도구가 있는 디렉터리
    tmp/ 임시 파일 저장하는 디렉터리
    vendor/ 서드 파티 코드가 있는 디렉터리
    .gitignore 원하는 파일을 git 에서 제외 시킬 수 있는 파일
    .ruby-version 루비 버전이 있는 파일
    config.ru rack 설정하는 파일
    Gemfile 레일즈 의존성이 있는 파일
    package.json js 의존성이 있는 파일
    Rakefile 배치 파일을 가지는 파일
    README.md 어플리케이션에 대한 설명이 있는 파일

DB 생성하기

명령어 : rails db:create

새로 만든 디렉토리(helloworld)로 이동해 DB 생성 명령어를 입력하면 'helloworld_development'와 'helloworld_test'라는 두 데이터베이스가 만들어진다.

필요한 잼 설치하기

명령어 : bundle install

서버 실행하기

명령어 : rails s 또는 rails server

  • 주의 : 초기비밀번호 설정을 안했다면, localhost:포트번호로 들어갔을 때 오류가 날 수 있다.
  • config/database.yml에 들어가서 필요한 정보를 수정해준다.
  • 유저이름, 비밀번호, 호스트 등을 설정할 수 있다.
# mysql 설정
development:
  adapter: mysql2
  encoding: utf8
  database: blog_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock
# postgresql 설정
development:
  adapter: postgresql
  encoding: unicode
  database: blog_development
  pool: 5
  username: blog
  password:

config/database.yml은 다음의 세 가지 환경설정으로 구성되어있다.

  • development(개발) 환경은 여러분의 개발 컴퓨터에서 사용됩니다.
  • test(테스트) 환경은 자동화된 테스트를 위해 사용됩니다.
  • production(제품) 환경은 어플리케이션을 실제 서비스에 배포할때 사용됩니다.
  • sqlite는 development(개발)모드와 test(테스트)모드에서 많이 사용함
  • 하지만 실제 production(제품)모드에서 사용하기에는 성능이 떨어지기 때문에, production(제품) 모드로 실행할 땐 MYSQL이나 PostgreSQL등을 사용하는 것이 일반적임

레일즈 명령하기

자주 쓰는 레일즈 커멘드

  • rails new : 새로운 rails 어플리케이션을 생성하는 방법
  • rails server(=rails s) : rails 에 포함되어있는 Puma라는 웹서버가 실행된다. 어플리케이션 서버를 띄울 때 사용한다.-e 로 environment 설정을, -p로 포트설정을 할 수 있다.
  • rails generate(=rails g) : generate 명령으로 템플릿을 사용하여 다양한 코드를 생성할 수 있다. boilerplate code를 작성할 필요가 없어진다.
  • rails console(=rails c) : 커맨드라인을 통해 Rails 어플리케이션을 직접 다룰 수 있다. 사용법은 IRB와 동일
  • rails dbconsole : 적절한 DBMS 를 찾고, DB 커맨드라인을 실행한다. (SQL)
  • rails destroy : generate 와 반대. 제너레이터 명령이 무엇을 실행했는지 확인하고, 그 이전 상태로 되돌려준다.

기타 특이 명령어

스캐폴드라는 간편한 명령어도 있다

  • Scaffold : 특정 Model을 생성하면서 CRUD 기반의 View, Controller를 한 번에 만들어주는 명령어
rails generate scaffold Post 
	title:string author:string contents:text

이 명령어 한 번에 소규모 게시판은 바로 만들어진다 (물론 view의 레이아웃이나 CSS, Controller의 API 호출이나 세부적인 사항은 개발자가 직접 해야하긴 함)

더 찾아볼 사항

  • validate
    : rails 는 validates 키워드를 통해 데이터를 저장할때, 유효성 검사 메소드를 지원한다.
  • ActiveRecord의 scope
    : Active record로 DB에서 데이터를 조회할 때 조회 범위를 줄여준다거나 필터링 할때 주로 사용한다.
    (자주 사용되는 쿼리를 지정할 수 있다)
  • respond_to : 해당 함수를 통하는 호출이 있었을 때, 어떻게 반응하도록 하겠는가를 정한다

 

728x90
저작자표시 비영리 (새창열림)

'Programming Guide > Ruby on Rails' 카테고리의 다른 글

Ruby 시작하기  (0) 2022.12.17
    'Programming Guide/Ruby on Rails' 카테고리의 다른 글
    • Ruby 시작하기
    발효홍삼
    발효홍삼
    코딩하는 홍삼

    티스토리툴바