Faraday: ๊ธฐ๋Šฅ ์š”์ฒญ: HTTP ๋™์‚ฌ์— ๋Œ€ํ•œ ๋ช…์‹œ์  ๋ฉ”์„œ๋“œ ์ •์˜

์— ๋งŒ๋“  2020๋…„ 07์›” 17์ผ  ยท  12์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: lostisland/faraday

์ตœ์ƒ์œ„ HTTP ๋™์‚ฌ ๋ฉ”์„œ๋“œ(์˜ˆ: Faraday.get )๋Š” default_connection ivar์— ํ”„๋ก์‹œ ํ•˜๋Š” missing_method ๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„ ๋น„ํšจ์œจ์ ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ(์ผ๋ฐ˜์ ์ธ ๋„คํŠธ์›Œํฌ ์š”์ฒญ ์ง€์—ฐ ์‹œ๊ฐ„์— ๋น„ํ•ด ์‚ฌ์†Œํ•œ ๋ฌธ์ œ์ž„) ๋‹ค์–‘ํ•œ ๋„๊ตฌ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฉ”์„œ๋“œ๋Š” pry , solargraph ๋“ฑ์—์„œ ์ž๋™ ์™„์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์„œ๋Š” https://www.rubydoc.info/gems/faraday/Faraday์—์„œ ์„ ํƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ๋ฒ•์€ ์…”๋ฒ— ์œ ํ˜• ๊ฒ€์‚ฌ์— ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค(https://github.com/sorbet/sorbet-typed/pull/268/commits/83132c1b19c50ad7516ecc806243afbd3445b98d์—์„œ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ๋“œ๋ฆฌํ”„ํŠธ์— ์ทจ์•ฝํ•จ)

์ด ๊ตฌํ˜„์„ ๋ช…์‹œ์  ๋ฉ”์„œ๋“œ ์ •์˜๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

documentation

๋ชจ๋“  12 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @dduugg , ๋ฉ”์„œ๋“œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•˜๋Š” ๋Œ€์‹  ๋ฌธ์„œ ์นœํ™”์ ์ธ ์†”๋ฃจ์…˜์„ ํƒ์ƒ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์—ฐ๊ฒฐ์—์„œ๋„ ๋ฉ”ํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ •์˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. https://github.com/lostisland/faraday/blob/master/lib/faraday/connection.rb#L195

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ํฌ์ธํŠธ์™€ ์ž˜ ์–ด์šธ๋ฆฌ๋‚˜์š”?
๊ทธ๋ ‡๋‹ค๋ฉด Faraday ๋ชจ๋“ˆ์— ๋Œ€ํ•ด์„œ๋„ ์œ ์‚ฌํ•œ ๋ฌธ์„œ ์Šค๋‹ˆํŽซ์„ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@iMacTia ์•ˆ๋…•ํ•˜์„ธ์š”, ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ช…์‹œ์  ์ •์˜์— ๋Œ€ํ•œ ์ €ํ•ญ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ํ† ๋ก ์˜ ํ‹€์„ ์žก๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฌธ์„œ ์ ‘๊ทผ ๋ฐฉ์‹์€ 7๊ฐœ์˜ ํ•œ ์ค„ ๋ช…์‹œ์  ์ „๋‹ฌ ์ •์˜๋ณด๋‹ค ์žฅํ™ฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค( method_missing ์ฝ”๋“œ ์™ธ์—๋„ ๋‹ค์–‘ํ•œ @!method ๋ฐ @!scope ์ง€์‹œ๋ฌธ ํฌํ•จ). Faraday ์— ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ์—ฌ๊ธฐ์— ์žˆ๋Š” ๊ทผ๊ฑฐ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ณ€๊ฒฝ์œผ๋กœ ์ €๋ฅผ ๊ฒฝ๊ณ„ํ•˜๊ฒŒ ๋œ ์ ์€ ์ฃผ๋กœ 2๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  • ๊ฐœ์ธ์ ์œผ๋กœ delegates ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ฝ”๋“œ ์ž‘์„ฑ์ž์—๊ฒŒ๋งŒ ์œ ๋ฆฌํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋ช‡ ๋…„ ๋™์•ˆ Ruby๋ฅผ ์‚ฌ์šฉํ•ด ์™”์œผ๋ฉฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด ์–ธ์–ด์˜ ๊ฐ„๊ฒฐํ•œ ๊ตฌ๋ฌธ์— ๊ฐ์‚ฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  delegates ์ฐพ์œผ๋ฉด ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ฆ‰์‹œ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž ์žฌ์ ์œผ๋กœ ์ˆ˜์‹ญ ์ค„์˜ ์ฝ”๋“œ๋ฅผ ๋ช‡ ์ค„๋กœ ์••์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • HTTP ๋™์‚ฌ ํ”„๋ก์‹œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฉ”ํƒ€ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ™œ์šฉํ•˜๋Š” ํŒจ๋Ÿฌ๋ฐ์ด์˜ ์œ ์ผํ•œ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ œ๊ธฐํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๋กœ ๊ณ ํ†ต์„ ๊ฒช์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์ง€๋งŒ ์•„์ง ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์— ๋™์˜ํ•˜๋ฉด ์˜ˆ์™ธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์„ ๋ก€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ํ”ผํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ณ€ํ™”์— ๋Œ€ํ•œ ๋‚˜์˜ ์ €ํ•ญ์— ์ดˆ์ ์„ ๋งž์ถ”๋Š” ๋Œ€์‹ , ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์—์„œ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•˜๋Š” ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ด์ ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ์ดํ•ดํ–ˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!
๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์„œ ์ฃผ์š” ๋ฌธ์ œ๊ฐ€ ์ฝ”๋“œ ์ œ์•ˆ, ์ž๋™ ์™„์„ฑ ๋ฐ ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•œ IDE/๋„๊ตฌ์™€์˜ ํ˜ธํ™˜์„ฑ์ด๋ผ๋ฉด ๋‚˜๋Š” ๋‹จ์ˆœํžˆ ๋ฌธ์„œ ์ฃผ์„(์šฐ๋ฆฌ๋Š” ์ด๋ฏธ YARD๋ฅผ ์ƒ๋‹นํžˆ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ)๊ณผ ๊ฐ™์€ ๋Œ€์ฒด ์†”๋ฃจ์…˜์„ ์ฐพ๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ฃผ์„์ด ๋ฉ”์„œ๋“œ ๋ชฉ๋ก๋งŒํผ ๊ฐ€๋…์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ณ  ์‰ฝ๊ฒŒ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ฃผ์žฅํ•˜์ง€๋งŒ ์ด ์†”๋ฃจ์…˜์ด ์žฅํ™ฉํ•˜๋‹ค๊ณ  ๋งํ•  ๋•Œ๋„ ๋งž์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @iMacTia , ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. API ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ์„ฑ ๋ฐ ๋„๊ตฌ ์ง€์›์ด ๋” ๋‚˜์€ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ „ํ™˜ํ–ˆ์ง€๋งŒ ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€๋น„ํ•˜์—ฌ ์ œ ์ƒ๊ฐ์„ ๊ณต์œ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋ฐœ๊ฒฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋ฉ”ํƒ€ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์‚ฌ์šฉ์„ ๋ฐฐ์ œํ•˜์ง€๋Š” ์•Š์ง€๋งŒ(์ด ํŠน์ •ํ•œ ๊ฒฝ์šฐ์—๋Š” ๋ช…์‹œ์ ์ธ def ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค), ์•ž์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ method_missing ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋Œ€์ฒดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • delegates ์ธ์ˆ˜๋ฅผ ์ดํ•ดํ–ˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. Faraday๋Š” HTTP ๋™์‚ฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ช…์‹œ์  ์œ„์ž„์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. (์ด ์ ์— ๋Œ€ํ•œ ํ˜ผ๋™์€ ์•„๋งˆ๋„ HTTP ๋™์‚ฌ ๋ฉ”์„œ๋“œ์˜ ๊ตฌํ˜„์ด ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•˜๋‹ค๋Š” ์ฝ”๋“œ ๋ƒ„์ƒˆ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.)
  • delegate ๋“ฑ์ด ์ฝ”๋“œ ์ž‘์„ฑ์ž์—๊ฒŒ ๋„์›€์ด ๋œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ˆ˜์‹ญ ๋…„์˜ ์ง‘๋‹จ ๋ฃจ๋น„ ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ์ผํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์—์„œ ์ ‘๊ทผ ๋ฐฉ์‹์— ๋Œ€ํ•œ ๊ฐ€๋…์„ฑ ์ด์ ์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค(pry, YARD, sorbet ๋ฐ solargraph๋ฅผ ํ†ตํ•ด API๋ฅผ ํƒ์ƒ‰ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๋ฐ ๋‚ญ๋น„๋˜๋Š” ์‹œ๊ฐ„์„ ์ œ์™ธํ•˜๋”๋ผ๋„). ). ์ ์–ด๋„ ์ด ํŠน์ • ์ง€์ ์—์„œ Rubyist๊ฐ€ ์ด API๋ฅผ ์ฒ˜์Œ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์„ ์ง€์ผœ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์ •์งํ•œ(๊ทธ๋ฆฌ๊ณ  ํฌ๋ง์ ์œผ๋กœ ์œ ์šฉํ•œ) ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ OSS์— ๋Œ€ํ•œ ์ด ๊ณตํ—Œ์— ๋Œ€ํ•œ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

ํ—ค์ด, ํŒจ๋Ÿฌ๋ฐ์ด์— ๋Œ€ํ•œ ๋ชจ๋“  ์ˆ˜๊ณ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๋‚˜๋Š” ์ด๊ฒƒ์ด ์˜ค๋ž˜๋œ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ์„ฑ์ด ์•ฝ๊ฐ„์˜ ๋ฌธ์ œ๋ผ๋Š” ๋ฐ ๋™์˜ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ผ๋ถ€ ๋ฏธ๋“ค์›จ์–ด์—์„œ ์ž‘์—… ์ค‘์ด๋ฉฐ ์ด ์„น์…˜์„ README์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด์ „์— Faraday๋ฅผ ์‚ฌ์šฉํ•ด ๋ณธ ์ ์ด ์—†๋Š” ์‚ฌ๋žŒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ฏ€๋กœ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์€ ๋‚ด๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” (๋‹ค์†Œ ๋จธ๋ญ‡๊ฑฐ๋ฆฌ๋ฉฐ) ์ˆ˜์ˆ˜๊ป˜๋ผ๋ฅผ ํ‘ธ๋Š” ๊ฒƒ์ด ์‰ฝ์ง€ ์•Š์•˜๋‹ค๊ณ  ๋งํ•  ๊ฒƒ์ด๋‹ค.

image

@gurgeous ๋‚˜๋Š” ๋ฌธ์„œ๊ฐ€ ํ™•์‹คํžˆ ์šฐ๋ฆฌ๊ฐ€ ๋” ๋‚˜์€ ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์ „์„ ์— ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ(์šฐ๋ฆฌ๋Š” Faraday ์›น ์‚ฌ์ดํŠธ ๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ) ์ด ๋ฌธ์ œ์˜ ์ œ์•ˆ์ด ๊ท€ํ•˜์˜ ํŠน์ • ์š”์ ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐ ์ต์ˆ™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์š”์ ์„ ๋†“์น˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ ์ž๋™ ์™„์„ฑ ๋ฐ ์ถ”์ธก์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋Œ€์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋„์›€์ด ๋˜์ง€ ์•Š์œผ๋ฉด ์ฝ”๋“œ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ณ  ์ž‘๋™ ๋ฐฉ์‹์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐœ์„ ๋œ ๋ฌธ์„œ(์‹œ๊ฐ์  ๋˜๋Š” ์ฝ”๋“œ ๋‚ด)๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์— ๋” ๋‚˜์€ ๋ฌธ์„œ๊ฐ€ ๋„์›€์ด๋˜์ง€ ์•Š๋Š” ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋˜๋Š” ์—ฌ๊ธฐ์— ๋ˆ„๋ฝ ๋œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
"๋ฐœ๊ฒฌ ๊ฐ€๋Šฅ์„ฑ"์— ๋Œ€ํ•œ ๋‚˜์˜ ์ดํ•ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ๊ฐ€์š”?

"๋ฐœ๊ฒฌ ๊ฐ€๋Šฅ์„ฑ"์— ๋Œ€ํ•œ ๋‚˜์˜ ์ดํ•ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ๊ฐ€์š”?

์ œ ๊ฒฝ์šฐ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด ๊ธฐ๋Œ€๋Š” ls Faraday ์—์„œ pry , ๋‹ค์Œ์— $ Faraday.get , ๋“ฑ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๋ฐฉ๋ฒ•์œผ๋กœ ๋›ฐ์–ด๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๋‹ค๋ฅธ ๋ณด์„์œผ๋กœ ์ด ์ž‘์—…์„ ํšจ๊ณผ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ํ•„์š”๊ฐ€ ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ํ‹ฐ์ผ“์„ ์—ฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. (์ด๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ •์  ๋ถ„์„ ๋„๊ตฌ์™€ ๊ฐ™์ด ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋‹ค๋ฅธ ๋ฌธ์ œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.)

์†Œ๋ฆฌ๋ฅผ ๋“ค์–ด์ฃผ์…”์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ €๋Š” ํŒจ๋Ÿฌ๋ฐ์ด ์›น์‚ฌ์ดํŠธ๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค! ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ๊ณผ ํ•จ๊ป˜ PR์„ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋„์™€์ฃผ์…”์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋…ธ๋ ฅ์€ ํ•ญ์ƒ ์ƒˆ๋‚ด๊ธฐ๋“ค์—๊ฒŒ ๋ณด์ƒ์„ ์ฃผ๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

pry + ls Faraday ์—์„œ ๋‚˜๋„ ๊ทธ ํŒจํ„ด์˜ ํŒฌ์ด๋ฉฐ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. method_missing์—์„œ ๋ฉ€์–ด์ง€๋Š” ๊ฒƒ์€ ๋‚˜์œ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค. Ruby๋Š” Ruby 3, ์–ธ์–ด ์„œ๋ฒ„, RBS ๋“ฑ์˜ ๋“ฑ์žฅ์œผ๋กœ ์ฒœ์ฒœํžˆ ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ ค๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋ฌธ์„œ์— ๋ถ€์ฐจ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@gurgeous ์šฐ๋ฆฌ๋Š” Pull Requests ๋ฌธ์„œ์— ๊ด€์‹ฌ์ด _์žˆ์Šต๋‹ˆ๋‹ค_. ์›น์‚ฌ์ดํŠธ๋ฅผ GitHub Pages์— ๊ฒŒ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” Gemfile(๋ฐ README) ์„ธํŠธ๊ฐ€ ์žˆ๋Š” docs/ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์ด ๋ถˆ๋ช…ํ™•ํ•˜๊ฑฐ๋‚˜ ์›น์‚ฌ์ดํŠธ ์—…๋ฐ์ดํŠธ ๊ณผ์ •์—์„œ _that_์— ๋Œ€ํ•œ ์ด์Šˆ๋‚˜ PR๋„ ์—ด์–ด์ฃผ์„ธ์š”.

Faraday ์‚ฌ์šฉ์ž๋ฅผ ๋ฐฐ๋ คํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ €๋Š” ํŒจ๋Ÿฌ๋ฐ์ด ์›น์‚ฌ์ดํŠธ๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค! ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ๊ณผ ํ•จ๊ป˜ PR์„ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋„์™€์ฃผ์…”์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋…ธ๋ ฅ์€ ํ•ญ์ƒ ์ƒˆ๋‚ด๊ธฐ๋“ค์—๊ฒŒ ๋ณด์ƒ์„ ์ฃผ๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

@gurgeous ์ ˆ๋Œ€์ ์œผ๋กœ! ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ๋ฌธ์„œ๋‚˜ ์›น์‚ฌ์ดํŠธ ๊ฐœ์„ ์— ๋Œ€ํ•œ ๋„์›€์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์œ ์ง€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ถ„๋ช…ํ•œ ๊ฒƒ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๋ถ„๋ช…ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์šฐ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ํ•จ๊ป˜ ์ •๋ง ๊ณ ๊ตฐ๋ถ„ํˆฌํ•˜๋ฉฐ ์ข…์ข… ๋ฌธ์„œํ™” ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค @olleolleolle์˜ ์ง€์†์ ์ธ ๋…ธ๋ ฅ์ด ์—†์—ˆ๋‹ค๋ฉด

pry ํฌ์ธํŠธ(cc @dduugg)์—์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์•„๋งˆ๋„ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ฐฉ๊ธˆ ๊ท€ํ•˜์˜ ์ถ”๊ฐ€ ์„ธ๋ถ€ ์ •๋ณด๋กœ ์‹œ๋„ํ•ด ๋ณด์•˜๊ณ  ls Faraday::Connection ๋Š” ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ฉ”์„œ๋“œ์™€ ์œ„์ž„๋œ ๋ฉ”์„œ๋“œ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค ๐Ÿ™Œ.
๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ Ruby "๋งˆ๋ฒ•"์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‚˜์˜ ์›๋ž˜ ์ดํ•ด๋Š” ์ž˜๋ชป๋˜์—ˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ ์œ ์ผํ•œ ์ œํ•œ์€ missing_method ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ณ„๋กœ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…์‹œ์  ๋ฐฉ๋ฒ•์˜ ๋„์ž…์ด์—ˆ์Šต๋‹ˆ๋‹ค.

def self.get(...)
  ...
end

def self.post(...)
  ...
end

#ย ... and so on ...

๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋ณธ Faraday ๋ชจ๋“ˆ์— ๋™์  ์ •์˜ ๋˜๋Š” ์œ„์ž„์„ ์ถ”๊ฐ€ํ•˜์—ฌ pry ์˜ ๊ฒ€์ƒ‰์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฑด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๋ชป๋ฐ›์•„์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!

์‹œ๊ฐ„ ์ œ์•ฝ์— ๋Œ€ํ•œ ๊ฑฑ์ •์ด ์—†์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ๊ฒฐ์ฝ” ๋‚˜์˜๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค! ๊ท€ํ•˜์˜ ๋…ธ๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚˜๋„ ๊ฐ€๋ดค์–ด...

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐ™์€ ํŽ˜์ด์ง€์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด re:docs์— ๋Œ€ํ•œ ํ† ๋ก ์„ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@iMacTia ์‚ฌ์šฉ์ž๊ฐ€ Faraday::Connection ๋ฅผ ์‚ดํŽด๋ณด๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ ์ดํ›„๋กœ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•œ API๊ฐ€ ์žˆ๋Š” HTTP gem์œผ๋กœ ์ „ํ™˜ํ–ˆ์ง€๋งŒ https://lostisland.github.io/faraday/usage/๋ฅผ ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ณด์•˜๊ณ  ์ฝ”๋“œ ์˜ˆ์ œ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(๋งˆ์ง€๋ง‰์€ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€๋งŒ ์•”์‹œ์ ์œผ๋กœ). ์˜ˆ์ œ๋Š” ์ฃผ๋กœ Faraday ์—์„œ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์ง€๋งŒ pry์—์„œ๋Š” ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•œ ๋‹ค๋ฅธ ๋ณด์„์„ ์•Œ์ง€ ๋ชปํ•˜๋ฉฐ ์—ฌ์ „ํžˆ ๊ทธ๊ฒƒ์ด ๋ฐ˜ํŒจํ„ด์ด๋ผ๋Š” ๊ฒฌํ•ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์–ธ์ œ๋‚˜์ฒ˜๋Ÿผ, ์ œ ๋ง์„ ๋“ค์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰