2021-03-02(Tue)

ํ•ญ๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-03-02(ํ™”)

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

11:00~24:00

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

ActiveJob

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

Tournament operation ๋ชจ๋“ˆ์„ ์™„์„ฑํ•œ๋‹ค.

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

์Šคํฌ๋Ÿผ ํ›„ eunhkim๋‹˜๊ณผ ํŽ˜์–ด์ฝ”๋”ฉํ•จ

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

PR ๋ฆฌ๋ทฐํ•˜๊ณ , PR ๋‚ ๋ฆฌ๋Š” ํ•˜๋ฃจ์˜€๋‹ค.

์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ํŒŒ์‹ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ruby, rails์—์„œ์˜ ์—๋Ÿฌ ๊ฐ์ฒด๊ฐ€ raise ๋˜๋Š” ๋ฐฉ์‹์„ ์ข€ ๋” ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์•„๋ž˜๋Š” error_message๋ฅผ ์ถ”์ถœํ•ด๋‚ด๊ธฐ ์œ„ํ•œ ๊ธด-์ฒด์ด๋‹ ๊ณผ์ •

rescue ActiveRecord::RecordInvalid => e
      key =  e.record.errors.attribute_names.first
      error_message = e.record.errors.messages[key].first
      return render_error("INVALID TOURNAMENT", error_message, 400)

์•„๋ž˜๋Š” ๋‚ด๊ฐ€ ๋‚ ๋ฆฐ PR ๋‚ด์šฉ์ด๋‹ค. 80๊ฐœ์˜ ์ปค๋ฐ‹, 737์ค„

-----------------

ํ† ๋„ˆ๋จผํŠธ ์ƒ์„ฑํ•˜๊ธฐ ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. api/tounaments/new URL๋กœ ์ ‘๊ทผํ•˜์‹œ๋ฉด ํ™•์ธ ๊ฐ€๋Šฅํ•˜์‹ญ๋‹ˆ๋‹ค!

  • ์ƒํ’ˆ์ด ์—†๋‹ค๋ฉด nil์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ๋ณด์ƒ ํƒ€์ดํ‹€์ด ์—†๋‹ค๋ฉด default ํƒ€์ดํ‹€์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ตฌํ˜„๋ฐฉ๋ฒ•

1. tournament_spec

ํ† ๋„ˆ๋จผํŠธ ์ƒ์„ฑ์‹œ ์ž…๋ ฅ๋˜๋Š” ๊ฐ’์ด invalidํ•œ ์กฐ๊ฑด๋“ค์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

  1. rails db:envrionment:set RAILS_ENV=test ๋ช…๋ น์–ด๋กœ test ๋ชจ๋“œ๋กœ ์ „ํ™˜

  2. rspec spec/models/tournament_spec.rb ๋ช…๋ น์–ด๋กœ ํ…Œ์ŠคํŠธ ์‹คํ–‰

ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‹์œผ๋กœ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋นจ๋ฆฌ ์—๋Ÿฌ๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ณ ์น  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹๋„ค์š” :)

2. tournament.rb

create_by ๋ฉ”์„œ๋“œ๋กœ ์š”์ฒญ์„ ํŒŒ์‹ฑํ•˜์—ฌ tournament ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ validation์„ ํ†ตํ•ด ์œ ํšจํ•œ ๊ฐ’์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

3. tournament_create_view

ํ† ๋„ˆ๋จผํŠธ ์ƒ์„ฑํผ์„ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์‚ฌํŒŒ๋ฆฌ์—์„œ๋Š” ํ† ๋„ˆ๋จผํŠธ ์‹œ์ž‘์ผ์ด ์บ˜๋ฆฐ๋” ํผ์œผ๋กœ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค๋งŒ web_admin, web_owner๋งŒ ์“ฐ๋Š” ํŽ˜์ด์ง€์ธ ๋งŒํผ ํฐ ์ด์Šˆ์—†๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ์ˆ˜์ •ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํŠน์ด์‚ฌํ•ญ

  • ํ•ด๋‹น ํŽ˜์ด์ง€๋Š” current_user์˜ position์ด web_owner, web_admin์ผ ๋•Œ๋งŒ ์ง„์ž…๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ถ”ํ›„ tournament_create_view์— ์ง„์ž…ํ•˜๋Š” ๋ฒ„ํŠผ์„ ์‚ฝ์ž…ํ•  ์˜ˆ์ •์ธ, admin ํŽ˜์ด์ง€๋ฅผ ์ž‘์—…ํ•  ๋•Œ ํ•จ๊ป˜ ์ฒ˜๋ฆฌํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค~!

  • ๋„ค์ด๋ฒ„ ์›จ์ผ์—์„œ๋Š” ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์ •์ƒ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! replaceAll์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €(IE, ์‚ผ์„ฑ ์ธํ„ฐ๋„ท.. ๋“ฑ) ์ค‘ ํ•˜๋‚˜์ธ๋“ฏ ํ•ด์š”. ํ‰๊ฐ€์— ์“ฐ์ด๋Š” ํฌ๋กฌ, ํŒŒ์ด์–ดํญ์Šค, ์‚ฌํŒŒ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ์จ์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

  • rspec์œผ๋กœ controller, request ํ…Œ์ŠคํŠธ๋„ ์‹œ๋„ํ•ด๋ณด๋ คํ–ˆ์œผ๋‚˜ ์ž˜ ๋˜์ง€ ์•Š๋„ค์š”ใ… ใ…  ์•Œ๊ฒŒ ๋˜์‹œ๋Š” ๋ถ„ ๊ณ„์‹œ๋ฉด ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :)

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

๋ธŒ๋ผ์šฐ์ €๋ณ„๋กœ ๋™์ž‘์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์—ฌ์‹คํžˆ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋ธŒ๋ผ์šฐ์ €๋ณ„๋กœ CSS๊ฐ€ ๋‹ฌ๋ฆฌ ์ ์šฉ๋˜๋Š” ์ˆ˜์ค€์˜ ์ด์Šˆ๋งŒ ๊ฒช์—ˆ๋Š”๋ฐ, replaceAll์ด ์›จ์ผ์—์„œ ์•„์˜ˆ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ชจ๋ฅด๊ณ  ๋„ˆ๋ฌด ์˜ค๋žซ๋™์•ˆ ์‹œ๊ฐ„ ์ผ๋‹ค.

rspec์œผ๋กœ controller, request ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ๋„ํ•˜๋ คํ–ˆ์œผ๋‚˜ ์ž˜ ๋˜์ง€ ์•Š์•„์„œ ์•„์‰ฝ๋‹ค. ๊ณต์‹ ์‚ฌ์ดํŠธ๋‚˜ ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ํ†ตํ•ด ๋ช…์‹œ๋œ ๋‚ด์šฉ๋Œ€๋กœ ์š”์ฒญํ—ค๋”๋ฅผ ๋„ฃ์—ˆ๋Š”๋ฐ ์™œ ์ž˜ ์•ˆ๋˜๋Š” ๊ฒƒ์ผ๊นŒ ํ .. ๋‚ด ์˜ˆ์ƒ์— ์ปจํŠธ๋กค๋Ÿฌ ๊ฐ์ฒด์˜ ๊ฒฝ๋กœ๋ฅผ Rspec์—์„œ ์ฐธ์กฐํ•ด๋‚ด์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ, ์ง€๊ธˆ ๋‹น์žฅ ์ฒ˜๋ฆฌํ•  ์ด์Šˆ๋Š” ์•„๋‹ˆ๋ผ๊ณ  ํŒ๋‹จํ–ˆ๋‹ค. ๋‹ค์Œ์— ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด์•ผ์ง€ :)

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

  • Tournament operation ๋ชจ๋“ˆ

Last updated