💎 루비온레일즈 공식문서(한글판) : https://rubykr.github.io/rails_guides/getting_started.html
이번에 처음으로 레일즈를 사용하는 프로젝트는 스캘래톤 셋팅된 레파지토리를 클론해 쓰다보니 프로젝트 초기셋팅을 직접 해본 적이 없다. 구조를 모르니까 맘대로 건들이기가 힘들었다. (리액트는 써봤지만 프레임워크는 처음이라 익숙하지가 않기도 하다.) 그래서 알아봤다.
프로젝트 시작 명령어 :
rails new [프로젝트 이름]
ex)rails new helloworld
sqlite3
로 설정 된다.
- DB를 mysql로 쓰려면
rails new [프로젝트 이름] -d mysql
또는rails new [프로젝트 이름] —database=mysql
- DB를 postgresql로 쓰려면
rails new [프로젝트 이름] -d postgressql
또는rails new [프로젝트이름] --database=postgresql
config/database.yml
파일을 수정해줘야 하고gemfile
도 수정해주어야 한다.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
어플리케이션에 대한 설명이 있는 파일명령어 :
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
: 해당 함수를 통하는 호출이 있었을 때, 어떻게 반응하도록 하겠는가를 정한다