2020-12-21(Mon)

  1. 학습 날짜 // 2020-12-21(월)

  2. 학습시간 // 9:00~22:00

  3. 학습 범위 및 주제 // Getting started with Rails

  4. 동료 학습 방법 // -

  5. 학습 목표 // Getting started with Rails 다 훑기

  6. 상세 학습 내용

루비온레일스 튜토리얼인 Getting started with Rails를 빠르게 훑었습니다.

아래처럼 과정을 정리하다가 학습 효율이 떨어지는 걸 느껴서 정리하는걸 내려놓았습니다.

Rails guides

루비온레일스 튜토리얼인 Getting started with Rails를 빠르게 훑는다.

레일스란?

루비 언어로 작성된 웹애플리케이션 개발 프레임워크이다.

'The Rails Way'를 학습하면 생산성이 크게 향상될 것이다! 'The Rails Way'는 다음 두 개의 가이드 원칙을 포함한다.

  • Don't Repeat Yourself(DRY)

    모든 지식은 하나의 시스템 안에서 유일해야 하고, 모호성이 없어야하며, 권위를 가져야 한다.

  • Convention Over Configuration

    레일즈는 웹어플리케이션 개발시 최선의 방법을 설정 내용으로 명시하지 않는다, 대신 디폴트 컨벤션으로 제시한다.

레일스 프로젝트 생성하기

우선 ruby 를 최소 2.5.0 이상 버전으로 설치하자.

mac os 카탈리나의 경우 ruby 2.6.0 버전이 기본으로 설치되어있다. 하지만 우리 팀은 ruby 2.7.1 버전으로 진행하기로 하였으므로 별도로 업데이트하는 작업을 거쳤다.

이 때 그냥 brew로 업데이트하면 환경변수가 꼬이는 등 대참사가 날 수 있다고 한다.

루비 버전 관리 RVM 기본 사용법을 참고하여 RVM(ruby version Manager)을 통해 업데이트하자!

어플리케이션 생성한 뒤에 레일스 애플리케이션 구조에 따라 다수의 파일과 폴더가 자동 생성된다. 간단하게 정리하면 아래와 같다.

파일/폴더

용도

app/

애플리케이션의 컨트롤러, 모델, 뷰, 헬퍼, 메일러, 채널, 작업 및 애셋을 포함한다.

bin/

앱을 시작하는 레일스 스크립트를 포함하며 애플리케이션 설정, 업데이트, 배포 또는 실행하는 데 사용하는 스크립트를 포함 할 수 있다.

config/

애플리케이션의 라우트, 데이터베이스 등을 구성한다. Configuring Rails Applications에 자세히 설명되어 있다.

config.ru

애플리케이션을 시작하는 데 사용되는 랙(Rack) 기반 서버의 랙 구성. 랙에 대한 자세한 내용은 Rack 웹 사이트를 참조한다.

db/

현재 데이터베이스 스키마와 데이터베이스 마이그레이션이 포함되어 있다.

Gemfile Gemfile.lock

이 파일을 사용하면 레일스 애플리케이션에 필요한 젬(gem) 의존성을 지정할 수 있다. 이 파일은 Bundler 젬에서 사용한다. Bundler에 대한 자세한 내용은 Bundler 웹 사이트를 참조한다

lib/

애플리케이션을 위한 확장 모듈.

log/

애플리케이션 로그 파일

package.json

이 파일을 사용하면 레일스 애플리케이션에 필요한 npm 종속성을 지정할 수 있다. 이 파일은 Yarn에서 사용한다. Yarn에 대한 자세한 내용은 Yarn 웹 사이트를 참조한다.

public/

누구라도 접급할 수 있는 유일한 폴더이다. 정적 파일 및 컴파일 된 애셋을 포함한다.

Rakefile

이 파일은 커맨드 라인에서 실행할 수 있는 태스크(task)를 찾아서 로드한다. 태스크 정의는 레일스의 구성 요소 전체에 걸쳐 정의된다. Rakefile을 변경하는 대신 애플리케이션의 lib/tasks 디렉토리에 파일을 추가한 후 자신의 태스크를 추가해야 한다.

README.md

애플리케이션에 대한 간단한 사용 설명서이다. 이 파일을 편집하여 다른 사용자에게 애플리케이션의 기능, 설정 방법 등을 알려 주어야 한다.

storage/

디스크 서비스용 액티브 스토리지 파일. 이에 대해서는 Active Storage Overview에서 다룬다.

test/

유닛 테스트, 픽스쳐(fixtures, 테스트 데이터) 및 기타 테스트 장치. 이것들은 Testing Rails Applications에서 다룬다.

tmp/

임시 파일 (캐시(cache)와 pid 파일).

vendor/

모든 벤더(타사) 코드를 위한 장소이다. 전형적인 레일스 애플리케이션에서는 벤더에서 제공하는 젬을 여기에 포함한다.

.ruby-version

이 파일에는 기본 루비 버전이 포함되어 있다.

"Hello" 문자를 표시하기 위해서는 최소한 하나의 controller(컨트롤러) 와 하나의 view(뷰) 를 생성해야 한다.

컨트롤러는 애플리케이션에 대한 특정 요청를 받는 역할을 한다. Routing(라우팅) 은 어떤 컨트롤러가 어떤 요청을 받을 것인가를 결정한다. 종종 하나의 컨트롤러가 하나 이상의 라우트로 연결되기도 하는데 이 때 특정 컨트롤러의 라우트들은 각기 다른 actions(액션) 을 호출하여 서비스한다. 액션은 정보를 모아서 뷰에 제공하는 역할을 수행한다.

뷰는 이러한 정보를 사람이 읽을 수 있는 형태로 표시하는데 중요한 차이점은 정보를 수집하는 곳이 뷰가 아니고 컨트롤러 라는 점이다. 뷰는 바로 이러한 정보를 단지 표시만해야 한다. 보통 뷰 템플릿은 eRuby(Embeded Ruby)로 작성하는데 사용자들에게 보내지기 전에 레일스 엔진이 요청 주기에 따라 처리하게 된다.

4.3 애플리케이션 홈 페이지 설정하기

튜토리얼대로 진행하고 http://localhost:3000/articles 요청을 보내는 순간 위 오류가 발생했다!

error Command "webpack" not found 라고 하여, 아래 커맨드를 입력하여 webpack을 다운로드해보았다.

rails webpacker:install

그런데 아래처럼 gyp ERR! 가 발생하였다.

아니나다를까 webpacker 설치는 완료되었지만 http://loaclhost:3000/articles 요청이 제대로 처리되지 않는다.

오류 메세지를 찬찬히 읽어보면 Xcode or CLT version 이 감지되지 않는 것이 원인인 것으로 추정된다.

이를 힌트삼아 검색했더니 macOS 카탈리나의 고질적인 문제로 보인다. 링크를 참고하여 xcode 삭제 후 재설치를 진행하였더니 깔끔하게 해결되었다!

  1. 학습 내용에 대한 개인적인 총평

너무 모든 것을 정리하면서 학습하려는 습관을 버려야하는데 팀 학습을 하면서 도진 것 같습니다. 다시 가볍고 빠르게 학습할 수 있도록 해야겠습니다.

다음 학습 계획

  • 루비온레일즈 학습

Last updated