# 20201221(월)

## 2020-12-21

### 1. 학습 날짜

* 2020-12-21

### 2. 학습 시간

* 09:30 \~ 12:00, 15:30 \~ 23:30

### 3. 학습 범위 및 주제

* 루비온레일즈
* 클린코드

### 4. 학습 목표

* 루비온레일즈 스캐폴드 기능에 대해 실습하고 정리한다.
* 클린코드를 읽고 정리한다.

### 5. 과제 제출

* x

### 6. 상세 학습 내용

* 루비온레일즈
  * 오늘은 ROR의 스캐폴딩 기능을 사용해서 간단한 웹 애플리케이션을 만들었다. 솔직히 말해서 스캐폴딩 기능으로 만들면 단 하나의 명령으로 아주 심플하게 동작하는 웹 애플리케이션을 만들 수 있다. 그 명령은 `rails generate scaffold [model name] [attr, ] [options]` 와 같다. 이렇게 model name 을 사용해서 만들면 이 이름에 맞게 컨트롤러, 뷰 등이 생성된다.
  * 즉 스캐폴딩을 이용하면 초보자도 단번에 웹을 띄을 수 있다는 것이고 그리고 분석을 하면서 배울게 많아진다는 뜻! 따라서 오늘은 스캐폴딩의 결과로 나오는 파일들과 코드를 분석하는 시간을 가졌다.
  * 위에서 스캐폴딩 기능으로 모델, 컨트롤러, 뷰를 만들었다. 하지만 바로 실행되지 않는다. 왜냐하면 db 생성을 하지 않았기 때문. db 의 생성과 수정을 할 때는 반드시 `rake db:migrate` 명령을 사용해주자. 이제 서버가 동작한다.
  * 가장 먼저 살펴볼것은 `route`다. 어느 주소로 클라이언트가 어떤 메소드로 요청을 했을 때 서버가 동작하는지를 단번에 파악할 수 있는 곳이기 때문이다. 따라서 `rails routes | grep [name]` 명령으로 라우트를 파악한다.
  * 기존에는 `get /posts/index => posts#index` 와 같은 라인을 각 URI 마다 처리해줬지만, 이건 반복이다. 그리고 ROR은 반복을 매우 싫어한다. 즉 메써드화가 되어있다. `config/routes.rb` 파일에 들어가보면 단 한줄 `resource` 로만 처리한다.
  * 이후에는 index, show, new, create, edit, update 그리고 destroy를 학습한다.
  * index는 생각하는 대로 기본 페이지를 보여주는 곳이다. 여기에서는 모든 저장된 데이터를 다 리스트로 보여주는게 index.
  * 흠... 너무 많다

### 7. 오늘 학습 내용에 대한 개인적인 총평

* 오늘은 꽤 공부를 많이한거 같다. 내일도 화이팅하자.

### 8. 다음 학습 계획

* 루비온레일즈
