2021-03-02-TIL
2021-03-02-TIL
Heroku 배포와 git push
그러면 헤로쿠 저장소 master브런치에 push하는게 배포랑 같다고 생각하면 되나요?
Heroku 문서 기준으로는 그렇게 이해해도 된다. Heroku는 앱마다 Git 저장소를 하나씩 두고, 로컬 저장소에 heroku라는 이름의 원격 저장소로 연결한다. 이 원격의 main이나 master 브랜치에 푸시하면 Heroku가 코드를 받아 빌드하고, 새 릴리스를 만들어 배포한다. 문서는 “Heroku only deploys code that you push to the master or main branches of the remote.”라고 적고, 다른 브랜치에 푸시하면 아무 효과가 없다고 덧붙인다.
1
2
git push heroku main # 로컬 main을 배포
git push heroku feature:main # 다른 로컬 브랜치를 배포
그래서 GitHub의 origin에 푸시하는 것과 heroku에 푸시하는 것은 다른 일이다. 코드를 공유하려면 origin에, 배포하려면 heroku에 푸시한다.
읽을거리
Branch naming
- mission1 : feature/user
- mission2 : feature/db
- mission3 : feature/login
- mission4 : feature/mapping
- mission5 : feature/ajax-xhr
mission6 : feature/multipage
- Git Branch Naming Conventions - Nitanshu Verma
미션 단계마다 feature/기능이름 형식으로 브랜치 이름을 정했다. 앞부분은 작업의 종류, 뒷부분은 대상 기능이라서 브랜치 목록만 봐도 무엇을 하는 브랜치인지 알 수 있다.
참고한 글은 다른 규칙을 제안한다. 부모 브랜치를 이름 앞에 붙여 master-feature_1처럼 쓰고, 여러 단어는 하이픈 대신 밑줄로 잇자는 것이다. 하이픈을 부모와 자식 브랜치의 구분자로 쓰기 때문이다. 규칙은 팀마다 다르므로, 어떤 형식이든 한 저장소 안에서 일관되게 쓰는 것이 중요하다.
mustache를 활용한 동적인 HTML과 MVC
Mustache는 스스로를 “Logic-less templates”라고 소개하는 템플릿 문법이다. 템플릿 안에 if나 for 같은 제어문을 쓰지 않고, 몇 가지 태그만으로 컨트롤러가 넘긴 값을 HTML에 채운다.
{{name}}: 값을 출력한다. 기본적으로 HTML 이스케이프가 적용되고, 이스케이프 없이 출력하려면{{{name}}}을 쓴다.{{#users}} ... {{/users}}: 섹션이다. 값이 리스트면 원소마다 반복하고, 값이 거짓이거나 빈 리스트면 렌더링하지 않는다.{{^users}} ... {{/users}}: 반전 섹션이다. 값이 없거나 거짓이거나 빈 리스트일 때만 렌더링한다.
1
2
3
4
5
6
7
8
<ul>
{{#users}}
<li>{{name}}</li>
{{/users}}
{{^users}}
<li>등록된 사용자가 없습니다.</li>
{{/users}}
</ul>
Spring Boot는 Mustache를 자동 설정을 지원하는 템플릿 엔진 가운데 하나로 두고, 템플릿은 기본적으로 src/main/resources/templates에서 찾는다. 컨트롤러가 Model에 users를 담고 뷰 이름을 돌려주면, Mustache가 위 템플릿에 값을 채워 HTML을 만든다. MVC에서 View 역할을 템플릿이 맡는 것이다.
댓글
아직 댓글이 없습니다