2021-01-28(Thu)

๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-01-28(๋ชฉ)

ํ•™์Šต ์‹œ๊ฐ„

10:00~24:00

ํ•™์Šต ๋ฒ”์œ„ ๋ฐ ์ฃผ์ œ

rspec, DB ๊ฒ€์ˆ˜, API router ๊ฒ€์ˆ˜

ํ•™์Šต ๋ชฉํ‘œ

rspec์„ ํ•™์Šตํ•˜์—ฌ DB์™€ API router๋ฅผ ๊ฒ€์ˆ˜ํ•˜์—ฌ environment ๋ธŒ๋žœ์น˜์— ํ•ฉ์นœ๋‹ค.

๋™๋ฃŒ ํ•™์Šต ๋ฐฉ๋ฒ•

eunhkim๋‹˜๊ณผ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ environment ๋ธŒ๋žœ์น˜์— ํ•ฉ์ณค๋‹ค.

์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

์šฐ์„  ์€ํœผ๋‹˜์ด github๊ณผ ๋””์Šค์ฝ”๋“œ๋ฅผ ์—ฐ๋™ํ•ด์ฃผ์…จ๋‹ค. ํ•œ๋™์•ˆ ๋””์Šค์ฝ”๋“œ๋ฅผ ์ฐฌ์–‘ํ•œ ๋’ค, github PR ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค. ์กฐ๊ธˆ ๊ท€์ฐฎ์•˜์ง€๋งŒ webserv ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ํŒ€์›๋“ค์ด ์ผ๊ด€์„ฑ์žˆ๊ฒŒ PR์„ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ์ด ์‰ฝ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๋Š๊ผˆ๋˜ ์ง€๋ผ ์‹œ๊ฐ„์„ ์“ฐ๋Š”๊ฒŒ ๊ฐ€์น˜์žˆ๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์€ํœผ๋‹˜์ด kaminari gem์œผ๋กœ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ํ•ด๊ฒฐํ•ด๋ฒ„๋ ธ๋‹ค. kaminari๋ฅผ ์„ค์น˜ํ•œ ๋’ค, rails g kaminari:config ํŒŒ์ผ์„ ๋งŒ๋“  ๋’ค, default_per_page๋ฅผ ์…‹ํŒ…. ์ดํ›„์—” ์ „์—ญ์ ์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ 10๊ฐœ์”ฉ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ด๋‹ค.

gemfile์— sidekiq์„ ์˜ฌ๋ ค๋†“๊ณ  bunlde install ํ–ˆ์„ ๋•Œ ์ด์Šˆ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ Gemfile.lock์„ ์‚ญ์ œํ•œ ๋’ค ๋‹ค์‹œ installํ•˜๋‹ˆ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. bundle update์— ๋Œ€ํ•ด ํ•™์Šตํ•  ํ•„์š”์„ฑ์„ ๋Š๋ผ๊ณ  ์ด ๋งํฌ๋ฅผ ๋ณด๊ณ  ํ•™์Šตํ–ˆ๋‹ค.

ํ•œํŽธ docker-compose up ํ–ˆ์„ ๋•Œ ์•„๋ž˜ ์—๋Ÿฌ๊ฐ€ ๋œจ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žฆ์•˜๋Š”๋ฐ, docker ์ด๋ฏธ์ง€์™€ ์—ฐ๋™๋œ DB volume์ด ๊ฐ ๋กœ์ปฌ๋งˆ๋‹ค ๋‹ฌ๋ผ์„œ ์ƒ๊ธด ์—๋Ÿฌ์˜€๋‹ค. DB volume์„ ์‹น ๋น„์šฐ๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ DB๋ฅผ ๋นŒ๋“œํ•˜๋‹ˆ ํ•ด๊ฒฐ๋˜๊ธด ํ–ˆ๋‹ค.

image-20210128153227151

rails-rspec gem์„ ์„ค์น˜ํ•˜๊ณ  ์ด ๋งํฌ ๋”ฐ๋ผ์„œ ์ง„ํ–‰ํ•ด๋ณด์•˜๋‹ค. ๋ฌธ์ œ๋Š” DB ๊ด€๊ณ„์„ฑ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ shoulda_matchers gem์ด ์šฐ๋ฆฌ๊ฐ€ ์ด๋ฏธ ๋นŒ๋“œํ•ด๋‘” ๋‹ค๋ฅธ gem๋“ค๊ณผ ๊ณ„์† ์ถฉ๋Œํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ .. ๊ฑฐ๊ธฐ๋‹ค๊ฐ€ rspec์œผ๋กœ DB ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š” ๊ฒƒ์€ too low ํ•œ ํ…Œ์ŠคํŠธ์—ฌ์„œ ์˜๋ฏธ์—†๋‹ค๋Š” ์˜๊ฒฌ์ด ์žˆ์—ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋Š” '์•ก์…˜'์— ๊ธฐ๋ฐ˜์„ ๋’€์„ ๋•Œ ์˜๋ฏธ์žˆ๋‹ค๋Š” ๊ด€์ ์— ๊ฐ๋ช… ๋ฐ›์•„์„œ ๊ตณ์ด rspec์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜์ง€๋Š” ์•Š๊ณ , ์ง์ ‘ ์ฝ˜์†”๋กœ DB๋ฅผ ํ™•์ธํ•˜์˜€๋‹ค. ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ ๋‚จ์ง€ ์•Š๋Š”๊ฒŒ ์•„์‰ฝ์ง€๋งŒ.. ๊ตณ์ด ์ด๋ ‡๊ฒŒ lowํ•œ ๋ ˆ๋ฒจ์˜ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ๋‚จ๊ฒจ๋ด์•ผ ์˜๋ฏธ๊ฐ€ ์žˆ๋‚˜์‹ถ๋‹ค.

router๋Š” postman์œผ๋กœ api ๋ฌธ์„œ๋ฅผ ์—ฐ๋™ํ•ด๋’€๋”๋‹ˆ ํด๋ฆญ ๋ช‡ ๋ฒˆ์— ๋ชจ์กฐ๋ฆฌ ํ…Œ์ŠคํŠธ๋ฅผ ๋๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. postman ์ฐธ ์ข‹๋‹คใ…Žใ…Ž

ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰

ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์ง‘์ฐฉ์„ ์–ด๋””๊นŒ์ง€ ๊ฐ€์ ธ๊ฐ€์•ผํ•  ๊ฒƒ์ธ๊ฐ€.. ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋ฃจ์˜€๋‹ค.

ํ˜‘์—…ํ•  ๋•Œ git์œผ๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด ์•ˆ๋  ํŒŒ์ผ๋“ค์ด ์˜ฌ๋ผ๊ฐ€๋Š” ์ด์Šˆ๊ฐ€ ์žˆ๋‹ค. ๊ฐ€๋ น ์‹œํฌ๋ฆฟํ‚ค๋‚˜ DB volume, node_modules ๋‚ด๋ถ€ ํŒŒ์ผ๋“ค ๋“ฑ๋“ฑ; ๋‚ด์ผ์€ ์ด๋Ÿฐ ํŒŒ์ผ๋“ค ๋ชจ์กฐ๋ฆฌ ์กฐ์‚ฌํ•ด์„œ .gitignore ํŒŒ์ผ์— ๋ฆฌ์ŠคํŠธ์—…ํ•ด์•ผ๊ฒ ๋‹ค.

๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

  • HTML ํŒŒ์ผ ๊ตฌ์กฐ ์žก๊ธฐ + ๋ฐฑ๋ณธ View ๊ตฌ์กฐ ์„ค๊ณ„

Last updated