티스토리 뷰

[Ruby On Rails]

- 루비 프로그램 언어에서 동작하는 웹 어플리케이션 프레임워크, 간략히 레일즈라고 부름

- 데이터베이스를 이용한 웹 애플리케이션을 개발할 때 반복되는 코드를 대폭 줄여 개발 기간을 단축하는 것으로 인기 (문법 간결)

- 모든 개발자가 개발을 시작 할때 필요한 초기 준비나 가정들을 쉽게 만들수 있는 도구 제공,

  웹 어플리케이션 프로그래밍을 더 쉽게 만들수 있도록 설계

 

철학

1) DRY (Don't Repeat Yourself)

같은 코드를 반복하지 말자

2) CoC (Convention over Configuration)

: 설정보다 규칙이 중요하다

- 웹 서비스 만드는 방법을 최선의 방법 하나로 제안 -> 이러한 정해준 방법을 Rails Way라고 함

- Rails는 Rails Way에 맞게 모든 설정을 다 본인이 만들어 놓음(기찻길 깔아놓은 것처럼)

 

 


 

MVC 패턴 (Model – View – Controller)

- 소프트웨어 디자인 패턴

- Rails가 선택한 방법, Rails Way에서 선택한 동적인 웹을 만드는 규칙

 

Model: 어플리케이션의 정보(data)와 데이터를 다루는 규칙들

(데이터의 형식을 지정, 저장하고 불러오는 작업들이 이루어지는 데이터 관리 영역, DB테이블 class화)

app/models

View: UI, 사용자에게 보여지는 부분, 데이터 표현에 관련된 루비 코드가 삽입되어있는 HTML 파일

app/views

Controller: 모델과 뷰를 연결하는 역할, 사용자의 입력이나 조작에 따라 모델 데이터를 조회&수정하고 변경사항을 뷰에 반영

app/controllers

 


각 파일 목적

Gemfile 레일즈 어플리케이션에 필요한 gem의 의존성 정보를 기술하는데 사용

README 어플리케이션을 위한 짧막한 설명 (설치, 사용 방법 기술등)

Rakefile 터미널에서 실행할 수 있는 배치잡

app/ 어플리케이션을 위한 컨트롤러, 모델, 뷰 포함

config/ 어플리케이션의 실행 시간 규칙, 라우팅, 데이터베이스 등 설정 저장

config.ru 랙(Rack) 기반의 서버들이 시작할때 필요한 설정

db/ 현재 데이터베이스의 스키마를 볼 수 있음 (데이터베이스 마이그레이션)

doc/ 어플리케이션에 대한 자세한 설명 문서

lib/ 어플리케이션을 위한 확장 모듈

log/ 어플리케이션 로그 파일

public/ 외부에서 볼수 있는 유일한 폴더(이미지, 자바스크립트, 스타일시트나 그외 정적인 파일들)

script/ 레일즈 스크립트 포함(어플리케이션 실행, 배포 관련한 스크립트)

test/ 유닛 테스트, 픽스쳐, 그와 다른 테스트 도구들

tmp/ 임시 파일(Temporary files)

vendor/ 서드 파티 코드들을 위한 공간(일반적으로 루비 젬, 레일즈 소스, 패키징된 추가 플러그인 위치)

 

 

공식 문서 참조

rubykr.github.io/rails_guides/getting_started.html

 

Ruby on Rails Guides: 레일즈 시작하기

이 가이드는 레일즈 3.0에 기초합니다. 기존 버전의 레일즈에서는 이 문서의 코드가 동작하지 않을 수 있습니다. 이 가이드의 원본은 영문 버전인 Getting Started with Rails 입니다. 번역 과정에서 원

rubykr.github.io

 


config/database.yml

데이터베이스 기본 설정 파일 

 

현재 내 development 개발 환경 접속 정보

sqlite3 데이터베이스가 내장되어 있으며 MySQL과 PostgreSQL 별도로 지원

production(제품) 환경에서 데이터베이스를 사용하기 위해, 레일즈는 대부분 어탭터(adapter)를 가지고 있음

 

 

db / schema.rb

: 현재 데이터베이스의 모델링 구조가 어떻게 구성되어있는지 나타내는 지도 역할

 스키마 파일 직접 수정하면 안됨 (직접 바꾼다고 속성 등이 바뀌지 않음)
마이그레이션 파일 생성하고 db:migrate 과정을 통해서 변경해야 함

 

타임스탬프: 마지막으로 변경된 시간

t.timestamps (루비온레일즈에서 자동 제공)

- created_at: 특정 레코드가 생성된 시간

- update_at: 특정 레코드가 업데이트될 때마다 현재 시간 기록

 

 

rails db:migrate

=> 마이그레이션 파일이 데이터베이스에 실제로 적용돼서 테이블 생성됨

 

어떤 rdbms를 쓰고 있는지에 대한 정보 

 

 

각각의 테이블 이름 지정 (테이블 이름들은 단수가 아닌 복수로 생성됨)
각각의 속성, 속성 타입 확인 가능
- t.index: 검색을 빠르게 해 주기 위한 어떤 정보

 

 


루비 자료형

숫자 / 문자열 / 배열(Array) / 해시(Hash)

 

nil = 아무것도 없다

 

해시(Hash) = {키=>요소}

댓글