[Ruby On Rails] 레일즈 시작하기

sunaaa·2021년 4월 15일
2

Ruby On Rails

목록 보기
10/20

💎 루비온레일즈 공식문서(한글판) : https://rubykr.github.io/rails_guides/getting_started.html

이번에 처음으로 레일즈를 사용하는 프로젝트는 스캘래톤 셋팅된 레파지토리를 클론해 쓰다보니 프로젝트 초기셋팅을 직접 해본 적이 없다. 구조를 모르니까 맘대로 건들이기가 힘들었다. (리액트는 써봤지만 프레임워크는 처음이라 익숙하지가 않기도 하다.) 그래서 알아봤다.

💎 루비온레일즈는?

  • Rails는 Ruby라는 언어를 기반으로 만들어진 웹 프레임워크다.

Ruby On Rails VS Ruby

  • Rails 는 웹 애플리케이션을 쉽게 만들어주는 Framework 이긴 하지만, Ruby 언어의 확장판 정도로 이해하는 관점도 있다.
  • 즉, Ruby 언어에 대한 기초 지식이 있으면, 별도의 프로그래밍 언어 자체에 대한 공부를 타언어에 비해 많이 요구하지 않는다는 것이다.
  • Rails 를 공부하는 것이 곧 Ruby 를 공부하는 것이라고 한다.

💎 프로젝트 시작하기

프로젝트 시작 명령어 : 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(제품) 환경은 어플리케이션을 실제 서비스에 배포할때 사용됩니다.
  • sqlitedevelopment(개발)모드와 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 키워드를 통해 데이터를 저장할때, 유효성 검사 메소드를 지원한다.

  • ActiveRecordscope
    : Active record로 DB에서 데이터를 조회할 때 조회 범위를 줄여준다거나 필터링 할때 주로 사용한다.
    (자주 사용되는 쿼리를 지정할 수 있다)

  • respond_to : 해당 함수를 통하는 호출이 있었을 때, 어떻게 반응하도록 하겠는가를 정한다

profile
Be Playful Front-end Developer

0개의 댓글