Faraday: μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ μžλ™μœΌλ‘œ @handlerλ₯Ό Faraday.default_adapter둜 μ„€μ •ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2012λ…„ 02μ›” 22일  Β·  35μ½”λ©˜νŠΈ  Β·  좜처: lostisland/faraday

일반적으둜 κ°„λ‹¨ν•œ 슀크립트의 경우 Faraday.default_adapterλ₯Ό 맨 μœ„μ— ν•œ 번 μ„€μ •ν•˜μ§€λ§Œ λ¦¬λ””λ ‰μ…˜μ„ μ’‹μ•„ν•˜λŠ” Githubμ—μ„œ μž‘μ—…ν•˜λŠ” λ™μ•ˆ 차단을 μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ” λ¦¬λ””λ ‰μ…˜μ„ λ”°λ₯΄κΈ° μœ„ν•΄ faraday_middleware(μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ 됨)λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€(I κ°€μ •) Faradayκ°€ ν•Έλ“€λŸ¬λ₯Ό Faraday.default_adapater둜 μ„€μ •ν•΄μ•Ό ν•˜λŠ” 경우 λΈ”λ‘μ—μ„œ μ‚¬μš©μœΌλ‘œ μ„€μ •λ˜μ§€ μ•Šμ€ 경우 더 쒋을 것이라고 μƒκ°ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 일뢀 μ½”λ”© 및 쀑볡 μ½”λ“œ IMOλ₯Ό μ ˆμ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

refactoring

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이것에 +1. μ΅œμ†Œν•œ μ–΄λŒ‘ν„°κ°€ μ§€μ •λ˜μ§€ μ•Šμ•˜κ±°λ‚˜ μ§€μ •λ˜μ§€ μ•Šμ€ 경우 default_adapter λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

λͺ¨λ“  35 λŒ“κΈ€

ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ κ³΅κ°œν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. κΈ°λ³Έ μŠ€νƒμ€ UrlEncoded + default_adapterμž…λ‹ˆλ‹€. κ³ μœ ν•œ μŠ€νƒμ„ μ •μ˜ν•˜λŠ” 경우 μ–΄λŒ‘ν„°λ₯Ό ν¬ν•¨ν•˜μ—¬ 100% μ •μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ‚΄κ°€ κ°€μž₯ 자주 default_adapterλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ‚¬μ‹€μ΄λ―€λ‘œ 기본값일 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 패러데이 μ–΄λŒ‘ν„°λ₯Ό λ¦¬νŒ©ν† λ§ν•˜μ—¬ 미듀웨어 λŒ€μ‹  μ—”λ“œν¬μΈνŠΈλ‘œ λ§Œλ“œλŠ” 것에 λŒ€ν•΄ μƒκ°ν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€(#47에 따름). 이 κΈ°λŠ₯은 ν•΄λ‹Ή λ³€κ²½ μ‚¬ν•­μ˜ 일뢀일 수 μžˆμŠ΅λ‹ˆλ‹€.

:+1: 이것은 μ˜¬ν•΄ 두 번째둜 μ €λ₯Ό λ¬Όμ—ˆμŠ΅λ‹ˆλ‹€. 당신은 λ‚΄κ°€ 배울 것이라고 μƒκ°ν•©λ‹ˆλ‹€. μˆ˜μ •λ˜λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€.

νƒ€ν˜‘: Faraday.with_default_stack() , κ·Έλž˜μ„œ μš°λ¦¬λŠ” 처음으둜 Faradayλ₯Ό μ‚¬μš©ν•˜λ €κ³  ν•˜λŠ” 영혼이 λ¦¬λ””λ ‰μ…˜μ„ λ”°λΌκ°ˆ 수 μžˆλ„λ‘ "κΈ°λ³Έ μŠ€νƒ"에 λŒ€ν•΄ 아무것도 μ•Œ ν•„μš”κ°€ 없도둝 ν•©λ‹ˆλ‹€. 합리적인?

@jbrains 예, 이것이 μ‚¬μš©μž μΉœν™”μ μ΄μ§€ μ•Šλ‹€λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. μ–΄λŒ‘ν„°λ₯Ό λ§ˆμš΄νŠΈν•˜μ§€ μ•Šμ•˜κ±°λ‚˜ 잘λͺ»λœ μœ„μΉ˜μ— λ§ˆμš΄νŠΈν•œ 경우 μ„€λͺ… 였λ₯˜κ°€ λ°œμƒν•˜λ„λ‘ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” λ‚΄ ν”„λ‘œμ νŠΈμ—μ„œ μ΄κ²ƒμ„ν–ˆλ‹€ :

        def faraday_with_default_adapter(base, &block)
          Faraday.new(base) { | connection |
            yield connection
            connection.adapter Faraday.default_adapter
          }
        end

λ‚˜λŠ” 당신이 λͺ¨λ“  μˆœμ—΄μ„ μ§€μ›ν•˜κ³  싢지 μ•Šλ‹€λŠ” 것을 μ•Œκ³  μžˆμ§€λ§Œ 거의 λͺ¨λ“  μ‚¬λžŒλ“€μ΄ κ²°κ΅­ 이것을 ν•  것 κ°™μŠ΅λ‹ˆλ‹€. :) UrlEncoded λΉ„νŠΈλ₯Ό μΆ”κ°€ν•˜λŠ” 방법을 μ•Œκ³  μžˆλ‹€λ©΄(아직 λΆ€λ”ͺμΉ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€) 여기에 μΆ”κ°€ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ„€λͺ… 였λ₯˜κ°€ μžˆλŠ” lint μŠ€νƒ€μΌ 검사가 ν™•μ‹€νžˆ 도움이 될 κ²ƒμž…λ‹ˆλ‹€. 감사 ν•΄μš”. κ·Έλž˜λ„ μž‘μ€ ν¬μΉ΄μš”ν¬κ°€ 우리λ₯Ό 더 많이 λ„μšΈ κ²ƒμž…λ‹ˆλ‹€.

μ•žμœΌλ‘œ pull requestλ₯Ό λ³΄λ‚΄λŠ” 것을 κ³ λ €ν•˜κ² μŠ΅λ‹ˆλ‹€. κ·Έλ™μ•ˆ κ°μ‚¬ν•©λ‹ˆλ‹€.

이것은 λ‚΄κ°€ μ—…λ‘œλ“œλ₯Ό μ‹œλ„ν•˜κ³  κΈ°λ³Έ μ–΄λŒ‘ν„°λ₯Ό μ§€μ •ν•˜μ§€ μ•Šμ•˜μ„ λ•Œ λͺ‡ μ‹œκ°„μ˜ μž‘μ—…μ„ μ†ŒλΉ„ν–ˆμŠ΅λ‹ˆλ‹€(κΈ°λ³Έ μ–΄λŒ‘ν„°μ΄λ―€λ‘œ 이미 μ„€μ •λ˜μ–΄ μžˆλ‹€κ³  κ°€μ •ν–ˆμŠ΅λ‹ˆλ‹€). λ‚˜λŠ” κ³„μ†ν•΄μ„œ 응닡/μš”μ²­ 개체λ₯Ό λ””λ²„κΉ…ν•˜κ³  κ²€μ‚¬ν–ˆμœΌλ©° λ‘λ €μš΄ κΈ°λ³Έ μ–΄λŒ‘ν„° 행이 λˆ„λ½λœ 것을 μ œμ™Έν•˜κ³ λŠ” μ „ν˜€ λ¬Έμ œκ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이것이 적어도 μ–΄λ”˜κ°€μ— README에 λ¬Έμ„œν™”λ˜μ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•˜κ±°λ‚˜ 적어도 λͺ…μ‹œμ  μ–΄λŒ‘ν„°κ°€ ν•„μš”ν•˜λ‹€κ³  κ²½κ³ ν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

감사 ν•΄μš”!

이것은 λ‹€μŒ μ˜ˆμ™€ ν•¨κ»˜ μ˜€λŠ˜λ„ μ €λ₯Ό λ¬Όλ ΈμŠ΅λ‹ˆλ‹€.

conn = Faraday.new(url: "http://www.example.com") do |faraday|
  faraday.response :json, content_type: /\bjson$/
end

response = conn.get("stuff")

nil λ•Œ 응닡 헀더λ₯Ό κ°€μ Έμ˜€λ €κ³  ν•  λ•Œ 였λ₯˜κ°€ faraday_middleware에 λ‚˜νƒ€λ‚©λ‹ˆλ‹€. μ•½κ°„ μ˜€ν•΄μ˜ μ†Œμ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€. 이것을 μ²˜λ¦¬ν•˜λŠ” "μ΅œμ„ μ˜ 방법"에 λŒ€ν•œ 결정이 λ‚΄λ €μ‘ŒμŠ΅λ‹ˆκΉŒ?

  • μ§€μ •λ˜μ§€ μ•Šμ€ 경우 κΈ°λ³Έ μ–΄λŒ‘ν„° μ‚¬μš©(μ΅œμƒμ˜ IMO)
  • μ§€μ •λ˜μ§€ μ•Šμ€ 경우 였λ₯˜ λ°œμƒ
  • README μ—…λ°μ΄νŠΈ

PR을 μ œμΆœν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

PR이 ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. λ‹€μŒ λ¦΄λ¦¬μŠ€μ—μ„œ 이 문제λ₯Ό ν•΄κ²°ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

@mislavλ‹˜, κ°μ‚¬ν•©λ‹ˆλ‹€.

λ„€, μ–΄μ œ 이걸 μ«“λŠλΌ ν•œ μ‹œκ°„μ„ ν—ˆλΉ„ν–ˆμŠ΅λ‹ˆλ‹€. μˆ˜μ •μ΄ 진행 μ€‘μž…λ‹ˆλ‹€. λ‹€μŒ λ¦΄λ¦¬μŠ€λŠ” μ–Έμ œ μΆœμ‹œλ  μ˜ˆμ •μž…λ‹ˆκΉŒ? μ§€λ‚œ 1월이 1μ›”μ΄μ—ˆλŠ”λ° λ¬΄μ²™μ΄λ‚˜ κΈ΄ 것 κ°™μŠ΅λ‹ˆλ‹€.

2014λ…„ 10μ›” 2일 λͺ©μš”일 μ˜€ν›„ 5:49, John Carney μ•Œλ¦Ό @github.com
썼닀:

λ‹€μŒ λ¦΄λ¦¬μŠ€λŠ” μ–Έμ œ μΆœμ‹œλ  μ˜ˆμ •μž…λ‹ˆκΉŒ? λ§ˆμ§€λ§‰μ€ 1μ›”μ΄μ—ˆλŠ”λ°,
κ²λ‚˜ 였랜만.

0.8 및 0.9λŠ” κΈ°λŠ₯이 λ™κ²°λ˜μ–΄μ•Ό ν•˜λ―€λ‘œ 이에 λŒ€ν•œ μˆ˜μ • 사항은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
1.0으둜만 μ˜΅λ‹ˆλ‹€. μ–Έμ œκ°€ λ μ§€λŠ” λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

κ°„λ‹¨ν•œ 쀑간 μ§€μ μ˜ κ²½μš°λŠ” μ–΄λ–»μŠ΅λ‹ˆκΉŒ? μ–΄λŒ‘ν„°κ°€ 없을 λ•Œ μš”μ²­μ„ μ‹œλ„ν•˜λ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€.

μ•„λ‹ˆλ©΄ μ–΄λŒ‘ν„° 없이 "μš”μ²­ν•˜κΈ°"에 λŒ€ν•œ μ‚¬μš© 사둀가 μžˆμŠ΅λ‹ˆκΉŒ?

2014λ…„ 10μ›” 3일 κΈˆμš”μΌ μ˜€ν›„ 2:07, John Bachir [email protected]
썼닀:

κ°„λ‹¨ν•œ 쀑간 μ§€μ μ˜ 경우 이것은 μ–΄λ–»μŠ΅λ‹ˆκΉŒ?
μ–΄λŒ‘ν„°κ°€ 없을 λ•Œ μš”μ²­ν•˜λ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€.

μ–΄λŒ‘ν„°κ°€ μž₯μ°©λ˜μ—ˆλŠ”μ§€ μ–΄λ–»κ²Œ κ°μ§€ν•©λ‹ˆκΉŒ?

λˆ„κ΅°κ°€κ°€ κ΅¬ν˜„ν•œ μ‚¬μš©μž 지정 μ–΄λŒ‘ν„°κ°€ λ°˜λ“œμ‹œ
Faraday::Adapterλ₯Ό ν•˜μœ„ 클래슀둜 μ§€μ •ν•©λ‹ˆλ‹€.

μ•„, μ•Œκ² μŠ΅λ‹ˆλ‹€. μ–΄λŒ‘ν„°λŠ” λ‹€λ₯Έ λ―Έλ“€μ›¨μ–΄μ˜ ν˜•μ œμ΄κ³  ν…ŒμŠ€νŠΈν•  μœ μΌν•œ APIλŠ” ν‘œμ€€ λž™ APIμ΄λ―€λ‘œ 미듀웨어가 http μ–΄λŒ‘ν„°μΈμ§€ 식별할 방법이 μ—†μŠ΅λ‹ˆλ‹€. :μƒˆλ“œλ‘¬λ³Έ:

이것이 κ΅¬ν˜„λ˜λ©΄ #496의 λ³€κ²½ 사항을 되돌릴 수 μžˆμŠ΅λ‹ˆλ‹€(λ¨Όμ € λ³‘ν•©λœ 경우).

이것에 +1. μ΅œμ†Œν•œ μ–΄λŒ‘ν„°κ°€ μ§€μ •λ˜μ§€ μ•Šμ•˜κ±°λ‚˜ μ§€μ •λ˜μ§€ μ•Šμ€ 경우 default_adapter λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

이름은 ν˜Όλž€μŠ€λŸ½μŠ΅λ‹ˆλ‹€. 미듀웨어λ₯Ό μΆ”κ°€ν•΄μ•Ό ν•  λ•Œ 미듀웨어λ₯Ό μΆ”κ°€ν•˜κ³  default_adapter λ₯Ό μ œμžλ¦¬μ— μœ μ§€ν•΄μ•Ό ν•  κ²ƒμœΌλ‘œ μ˜ˆμƒν•©λ‹ˆλ‹€.

μ–΄λŒ‘ν„°κ°€ μ „ν˜€ μ—†λ‹€λŠ” 것은 어리석은 μΌμž…λ‹ˆλ‹€. 당신은 κ²°μ½” 그것을 μ›ν•˜μ§€ ...

λ‚˜λŠ” 단지 μš°λ¦¬κ°€ 이것을 κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ μ „λž΅μ— λŒ€ν•΄ λ‚΄λΆ€μ μœΌλ‘œ λ…Όμ˜ν•˜κ³  μžˆλ‹€λŠ” 것을 λͺ¨λ“  μ‚¬λžŒλ“€μ—κ²Œ ν™•μ‹€νžˆ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.
μ‰¬μš΄ κ²€μ‚¬μ²˜λŸΌ λ“€λ¦¬μ§€λ§Œ @mislav κ°€ 이미 μ„€λͺ…ν–ˆλ“―이 μ‚¬λžŒλ“€μ΄ μ–΄λŒ‘ν„°λ₯Ό 미듀웨어 μŠ€νƒμ— μΆ”κ°€ν•΄μ•Ό ν•˜λŠ” μžμœ μ™€ κ΄€λ ¨λœ ν˜„μž¬ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
사싀, ν˜„μž¬ "μ–΄λŒ‘ν„°"λŠ” λ‹€λ₯Έ 것과 λ§ˆμ°¬κ°€μ§€λ‘œ μš”μ²­μ„ μˆ˜ν–‰ν•˜λŠ” 미듀웨어에 λΆˆκ³Όν•©λ‹ˆλ‹€.
이제 μžμ‹ μ˜ 미듀웨어 μŠ€νƒμ„ μ •μ˜ν•  λ•Œ 연결을 ꡬ좕할 λ•Œ #adapter λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” ν•œ λ‹€λ₯Έ λ―Έλ“€μ›¨μ–΄μ—μ„œ μ–΄λŒ‘ν„°λ₯Ό κ°μ§€ν•˜λŠ” κΈ°λŠ₯을 μžƒκ²Œ λ©λ‹ˆλ‹€. λΆˆν–‰νžˆλ„ ν˜„μž¬λ‘œμ„œλŠ” ν•„μˆ˜κ°€ μ•„λ‹ˆλ―€λ‘œ μ–΄λŒ‘ν„° 감지가 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

μ‹œμ›ν•œ! μ—¬κΈ°μ—μ„œ μ•Œλ €μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. :)

2016λ…„ 11μ›” 14일 μ˜€ν›„ 2μ‹œ 45뢄에 Mattia [email protected] μ—μ„œ λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 단지 μš°λ¦¬κ°€ λ‚΄λΆ€μ μœΌλ‘œ μ „λž΅μ„ λ…Όμ˜ν•˜κ³  μžˆλ‹€λŠ” 것을 λͺ¨λ“  μ‚¬λžŒλ“€μ—κ²Œ ν™•μ‹€νžˆ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.
이것을 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄.
μ‰¬μš΄ κ²€μ‚¬μ²˜λŸΌ λ“€λ¦¬μ§€λ§Œ
@mislav λŠ” 이미 λ¬Έμ œκ°€ μžˆλ‹€κ³  μ„€λͺ…ν–ˆμŠ΅λ‹ˆλ‹€.
μ‚¬λžŒλ“€μ΄ μ–΄λŒ‘ν„°λ₯Ό μΆ”κ°€ν•΄μ•Ό ν•˜λŠ” μžμœ μ™€ κ΄€λ ¨λœ μˆœκ°„
미듀웨어 μŠ€νƒ.
사싀 ν˜„μž¬ "μ–΄λŒ‘ν„°"λŠ” λ‹€μŒκ³Ό 같은 미듀웨어에 μ§€λ‚˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
기타, μš”μ²­μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
이제 μžμ‹ μ˜ 미듀웨어 μŠ€νƒμ„ μ •μ˜ν•˜λ©΄
#adapter λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” ν•œ λ‹€λ₯Έ λ―Έλ“€μ›¨μ–΄μ—μ„œ μ–΄λŒ‘ν„°λ₯Ό κ°μ§€ν•˜μ‹­μ‹œμ˜€.
연결을 ꡬ좕할 λ•Œμ˜ 방법. λΆˆν–‰νžˆλ„, κ·Έκ²ƒμ˜ μ‚¬μš©μ€
ν˜„μž¬λ‘œμ„œλŠ” ν•„μˆ˜μ΄λ―€λ‘œ μ–΄λŒ‘ν„° 감지가 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

β€”
당신이 λŒ“κΈ€μ„ λ‹¬μ•˜κΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHub μ—μ„œ λ³΄κ±°λ‚˜ μŒμ†Œκ±°μŠ€λ ˆλ“œ .

https://v2.developer.pagerduty.com/docs/authentication

λ”°λΌμ„œ Ruby+Faraday에 λŒ€ν•œ PagerDuty API λ¬Έμ„œλŠ” 이 λ™μž‘μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ½”λ“œλ§Œ μ‚¬μš©ν•˜λ©΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. (κ³ μ •ν•˜μ§€ μ•ŠλŠ” ν•œ μ–΄λŒ‘ν„°κ°€ μ—†λ‹€λŠ” 점을 μ§€μ ν–ˆκΈ° λ•Œλ¬Έμ— μ•„λ§ˆλ„ 이제 해결될 κ²ƒμž…λ‹ˆλ‹€.)

μ†”μ§νžˆ 제 μ œμ•ˆμ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

"conn.get"을 ν˜ΈμΆœν•˜κ³  conn에 μ–΄λŒ‘ν„°κ°€ μ—†μœΌλ©΄ μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œμΌœ . ν˜„μž¬ λ™μž‘μ€ μ¦‰μ‹œ λ°˜ν™˜ν•˜μ§€λ§Œ Faradayκ°€ get 호좜의 결과둜 μ„€λͺ…ν•˜λŠ” μƒνƒœλ‘œ μ„€μ •ν•˜μ§€ μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ ".status"λŠ” μ—¬μ „νžˆ nilμž…λ‹ˆλ‹€. 이것은 정말 λ†€λΌμš΄ ν–‰λ™μž…λ‹ˆλ‹€! λ‚˜λŠ” "당신이 λ‚˜μ—κ²Œ 무엇을 ν•΄μ£ΌκΈ°λ₯Ό μ›ν•˜λŠ”μ§€ μ „ν˜€ λͺ¨λ₯΄κΈ° λ•Œλ¬Έμ— λ‚˜λŠ” 아무것도 ν•  수 μ—†λ‹€"라고 말할 κ²ƒμž…λ‹ˆλ‹€. μ•„λ§ˆλ„ μΌμ’…μ˜ 진단을 λ§Œλ“€μ–΄λ‚Ό κ²ƒμž…λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @seebs μ–΄λ¦¬μ„κ²Œ λ“€λ¦°λ‹€λŠ” 것을 μ•Œκ³  μžˆμ§€λ§Œ 이전 μ˜κ²¬μ—μ„œ λ³Ό 수 μžˆμ—ˆλ˜ κ²ƒμ²˜λŸΌ 이것이 쉽지 μ•Šμ€ 이유λ₯Ό μ„€λͺ…ν–ˆμŠ΅λ‹ˆλ‹€.

μžμ‹ μ˜ 미듀웨어 μŠ€νƒμ„ μ •μ˜ν•  λ•Œ 연결을 ꡬ좕할 λ•Œ #adapter λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” ν•œ λ‹€λ₯Έ λ―Έλ“€μ›¨μ–΄μ—μ„œ μ–΄λŒ‘ν„°λ₯Ό κ°μ§€ν•˜λŠ” κΈ°λŠ₯을 μžƒκ²Œ λ©λ‹ˆλ‹€. λΆˆν–‰νžˆλ„ ν˜„μž¬λ‘œμ„œλŠ” ν•„μˆ˜κ°€ μ•„λ‹ˆλ―€λ‘œ μ–΄λŒ‘ν„° 감지가 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

λ‚˜λŠ” 무슨 일이 μΌμ–΄λ‚˜λŠ”μ§€ μΆ”μ ν•˜λ €κ³  λ…Έλ ₯ν–ˆκ³ , λ‚˜λŠ” λ­”κ°€λ₯Ό λ†“μΉ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

λ§Žμ€ μ‚¬λžŒλ“€μ΄ ν•˜λŠ” λͺ…λ°±ν•œ 일을 ν•˜κ³  μ–΄λŒ‘ν„°λ₯Ό μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ get을 ν˜ΈμΆœν•  λ•Œ κ²°κ΅­ app.call을 μˆ˜ν–‰ν•˜λŠ” rack_builder의 build_response둜 λλ‚©λ‹ˆλ‹€. 그리고 μ €λŠ”... μ‹€μ œλ‘œ 그것이 μ–΄λ””λ‘œ κ°€λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ μ €λŠ” 앱이 μ–΄λ””μ—μ„œ μ„€μ •λ˜μ—ˆλŠ”μ§€ λ³Ό 수 μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

κ·Έλž˜μ„œ μ œκ°€ κΆκΈˆν•œ 것은 "adapter :foo"λ₯Ό ν•˜μ§€ μ•ŠμœΌλ©΄ κ²°κ΅­ μ „ν™”λ₯Ό λ°›λŠ” κ²°κ³ΌλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

ν•˜λ‚˜μ˜ κ°„λ‹¨ν•œ μ†”λ£¨μ…˜:
def initialize(ν•Έλ“€λŸ¬ = [])
@handlers = ν•Έλ“€λŸ¬
λ§Œμ•½ block_given?

  • self.adapter 패러데이.default_adapter
    λΉŒλ“œ(&Proc.new)
    elsif @handlers.empty?

... λ‚˜λŠ” 이것이 μž‘λ™ν•  것이라고 μƒκ°ν•©λ‹ˆκΉŒ(-ish)?

λ˜λŠ” build(&Proc.new) ν›„ self.adapterκ°€ μ„€μ •λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

adapter :foo κ°€ μ–΄λŒ‘ν„°λ₯Ό μ„€μ •ν•˜λŠ” 데 κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” λ°©λ²•μ΄μ§€λ§Œ λ‹€λ₯Έ 방법도 μžˆμŠ΅λ‹ˆλ‹€.
#adapter λŠ” 사싀 λ„μš°λ―ΈμΌ λΏμ΄μ§€λ§Œ #use λ₯Ό μ‚¬μš©ν•˜μ—¬ μ–΄λŒ‘ν„°λ₯Ό μŠ€νƒμ— 넣을 수 μžˆμŠ΅λ‹ˆλ‹€.

conn = Faraday.new(url: "http://www.example.com") do |faraday|
  faraday.response :logger
  faraday.use Faraday::Adapter::NetHttp
end

κ·Έλ ‡λ‹€λ©΄ ν˜„μž¬ μ–΄λŒ‘ν„°λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? ν˜ΈμΆœμ„ μˆ˜ν–‰ν•˜κ³  κ²°κ³Όλ₯Ό env 에 μ €μž₯ν•˜λŠ” 미듀웨어에 μ§€λ‚˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것이 ν˜ΈμΆœλ˜λŠ” #adapter λ©”μ†Œλ“œμ— λ‹¨μˆœνžˆ μ˜μ‘΄ν•  수 μ—†λŠ” μ΄μœ μž…λ‹ˆλ‹€. μš”κ΅¬ 사항이 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— Faraday::Adapter μ—μ„œ μƒμ†ν•˜λŠ” μ–΄λŒ‘ν„° 역할을 ν•˜λŠ” 미듀웨어에 μ˜μ‘΄ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

μœ μΌν•œ 해결책은 Faraday 1.0 릴리슀λ₯Ό μ‚¬μš©ν•˜μ—¬ #adapter λ©”μ„œλ“œλ₯Ό 의무적으둜 μ‚¬μš©ν•˜λ„λ‘ ν•˜κ±°λ‚˜ λ©”μ„œλ“œκ°€ ν˜ΈμΆœλ˜μ§€ μ•ŠμœΌλ©΄ μŠ€νƒμ— κΈ°λ³Έ μ–΄λŒ‘ν„°λ₯Ό ν‘Έμ‹œν•˜κ³  μ‚¬μš©ν•  것이라고 κ°€μ •ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

μš°λ¦¬λŠ” μ–΄λ–€ 방식이 μ΅œμƒμ˜ μ†”λ£¨μ…˜μ΄ 될 것인지 λ‚΄λΆ€μ μœΌλ‘œ μ—¬μ „νžˆ λ…Όμ˜ 쀑이며 κ²°κ΅­ μ—…λ°μ΄νŠΈ 후에 μ‚¬λžŒλ“€μ΄ 예기치 μ•Šμ€ κ²°κ³Όλ₯Ό μ–»κ²Œ 될 κ²ƒμž…λ‹ˆλ‹€.
λ§Žμ€ μ‚¬λžŒλ“€μ΄ Faradayλ₯Ό 처음 μ‚¬μš©ν•  λ•Œ μΌμ–΄λ‚˜λŠ” μΌμž…λ‹ˆλ‹€. 저도 λ™μ˜ν•˜μ§€λ§Œ bundle update λ₯Ό μ‹€ν–‰ν•œ ν›„ ν”„λ‘œλ•μ…˜ μ‹œμŠ€ν…œμ—μ„œ μ΄λŸ¬ν•œ 일이 λ°œμƒν•˜λ©΄ ν™•μ‹€νžˆ 더 λ‚˜μ©λ‹ˆλ‹€. :)

λ‚΄κ°€ μ΄ν•΄ν•˜μ§€ λͺ»ν•˜λŠ” 것은 ... μ–΄λŒ‘ν„°λ₯Ό μ„€μ •ν•˜μ§€ μ•Šμ€ 경우 ν˜ΈμΆœμ„ μ²˜λ¦¬ν•˜κ³  κ²°κ³Όλ₯Ό μ €μž₯ν•˜λŠ” 것은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? μ–΄λŒ‘ν„°λ₯Ό μ„ νƒν–ˆλ‹€λ©΄ μ–΄λŒ‘ν„°μ˜ call() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 호좜이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. μ–΄λŒ‘ν„°λ₯Ό μ„ νƒν•˜μ§€ μ•Šμ€ 경우 μ‹€μ œλ‘œ μ‹€ν–‰λ˜λŠ” μ½”λ“œλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

μ—¬κΈ°μ—μ„œ #adapter 방법을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  μ–΄λŒ‘ν„°λ₯Ό μ„ νƒν–ˆμŠ΅λ‹ˆλ‹€.

  faraday.use Faraday::Adapter::NetHttp

이전 λŒ“κΈ€μ—μ„œ λ‚΄ μŠ€λ‹ˆνŽ«μ„ κ°€μ Έ μ™€μ„œ μ‹œλ„ν•΄ λ³΄μ„Έμš”. μ œλŒ€λ‘œ μž‘λ™ν•  κ²ƒμž…λ‹ˆλ‹€.
λ¬Έμ œλŠ” μŠ€νƒμ— μ–΄λŒ‘ν„°λ₯Ό μ—¬λŸ¬ 가지 λ°©λ²•μœΌλ‘œ ν‘Έμ‹œν•  수 있으며 일단 μ–΄λŒ‘ν„°κ°€ 있으면 μš”μ²­μ— μ‚¬μš©λ©λ‹ˆλ‹€( #call λ©”μ„œλ“œ 호좜).

μ£„μ†‘ν•©λ‹ˆλ‹€, λ‚˜λŠ” λΆ„λͺ…νžˆ λΆˆλΆ„λͺ…ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬λŸ¬ 가지 λ°©λ²•μœΌλ‘œ μ–΄λŒ‘ν„°λ₯Ό 선택할 수 μžˆλ‹€λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ μ–΄λŒ‘ν„°λ₯Ό μ„ νƒν•˜μ§€ μ•Šκ³  conn.get(...)을 ν˜ΈμΆœν•˜λŠ” 일반적인 초보자 μ‹€μˆ˜λ₯Ό κ³ λ €ν•˜μ‹­μ‹œμ˜€. "νš¨κ³Όκ°€ μ—†λŠ” 것"을 μ œμ™Έν•˜κ³  μ‹€μ œλ‘œ μ–΄λ–€ 일이 λ°œμƒν•©λ‹ˆκΉŒ?

λ‚˜λŠ” μ „ν™”λ₯Ό μΆ”μ ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ μ‹€μ œλ‘œ 무슨 일이 μΌμ–΄λ‚˜λŠ”μ§€ μ•Œμ•„λ‚Ό 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. Connection이 run_requestλ₯Ό ν˜ΈμΆœν•˜λŠ” κΈ°λ³Έ get을 μ •μ˜ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. μ°¨λ‘€λ‘œ build_request 및 build_responseλ₯Ό ν˜ΈμΆœν•˜κ³  이것이 app.call()을 ν˜ΈμΆœν•˜λŠ” rack_builder의 build_response()μ—μ„œ λλ‚œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 앱이 call()을 μ²˜λ¦¬ν•˜λŠ” Response 객체λ₯Ό μƒμ„±ν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. 그런데 ν—·κ°ˆλ¦½λ‹ˆλ‹€. call() λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜λŠ” 것쑰차 Responseλ₯Ό λ³Ό 수 μ—†μœΌλ©° μ‹€μ œλ‘œ call() λ©”μ„œλ“œκ°€ ν˜ΈμΆœλ˜λŠ” κ²°κ³Όλ₯Ό νŒŒμ•…ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” ν˜ΈμΆœλ˜λŠ” 호좜 λ©”μ†Œλ“œκ°€ μžˆλŠ” 무언가 κ°€ μžˆλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. μ–΄λŒ‘ν„°λ₯Ό μ„ νƒν•œ 경우 ν•΄λ‹Ή μ–΄λŒ‘ν„°μ˜ 호좜 방법을 κ°€μ Έμ˜΅λ‹ˆλ‹€. μ–΄λŒ‘ν„°λ₯Ό μ„ νƒν•˜μ§€ μ•Šμ€ 경우 μ‹€μ œλ‘œ μ‹€ν–‰λ˜λŠ” 호좜 방법은 μ–΄λ””μ—μ„œ μ™”μŠ΅λ‹ˆκΉŒ?

μš”μ²­κ³Ό 응닡을 μ„€μ •ν•œ ν›„ Connection λŠ” λͺ¨λ“  미듀웨어λ₯Ό μ‚΄νŽ΄λ³΄κ³  μŠ€νƒμ΄ μ±„μ›Œμ§€λŠ” 것과 같은 μˆœμ„œλ‘œ call(env) λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.
"일반 미듀웨어"와 μ–΄λŒ‘ν„°λ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  미듀웨어 쀑 ν•˜λ‚˜κ°€ μ–΄λŒ‘ν„°λΌκ³  κ°€μ •ν•©λ‹ˆλ‹€. μŠ€νƒμ— "μ–΄λŒ‘ν„° 미듀웨어"κ°€ μ—†μœΌλ©΄ λ‹€λ₯Έ λͺ¨λ“  미듀웨어가 ν˜ΈμΆœλ˜μ§€λ§Œ( call λ©”μ„œλ“œ) κ·Έ 쀑 아무 것도 μš”μ²­μ„ 효과적으둜 μˆ˜ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(μ–΄λŒ‘ν„° μ—­ν• ).
즉, 응닡에 μƒνƒœ, λ³Έλ¬Έ 및 "μ–΄λŒ‘ν„° 미듀웨어"둜 μ±„μ›Œμ§€λŠ” 기타 λͺ¨λ“  ν•„λ“œκ°€ λˆ„λ½λ©λ‹ˆλ‹€.

쉽지 μ•Šλ‹€λŠ” 것을 μ΄ν•΄ν•˜μ§€λ§Œ 이제 더 λͺ…확해지기λ₯Ό λ°”λžλ‹ˆλ‹€ πŸ˜‚

μ•„ν•˜ν•˜! 그것이 λ‚΄κ°€ μ΄ν•΄ν•˜μ§€ λͺ»ν•œ κ²ƒμž…λ‹ˆλ‹€. 그듀이 λͺ¨λ‘ call() ν•¨μˆ˜λ₯Ό μ œκ³΅ν•  것이라고 μƒκ°ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

λͺ¨λ“  것을 ν˜ΈμΆœν•œ ν›„ μƒνƒœκ°€ μ„€μ •λ˜μ§€ μ•Šμ€ 경우 μ½”λ“œμ—μ„œ μ˜ˆμ™Έκ°€ λ°œμƒν•˜λ©΄ μ–΄λ–»κ²Œ λ κΉŒμš”? "StatusNotSetException: μƒνƒœκ°€ μ„€μ •λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 미듀웨어가 μ‹€μ œλ‘œ λ„€νŠΈμ›Œν¬ κ°€μ Έμ˜€κΈ°λ₯Ό μˆ˜ν–‰ν•˜λŠ” μ–΄λŒ‘ν„°λ₯Ό μ§€μ •ν•˜μ§€ μ•Šμ•˜μ„ κ°€λŠ₯성이 ν½λ‹ˆλ‹€."

λ‚˜λŠ” 이것이 μˆ˜μ •λ˜λŠ” 것을 μ •λ§λ‘œ 보고 μ‹ΆμŠ΅λ‹ˆλ‹€!

#750 @iMacTia μ—μ„œ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‹«μœΌμ‹œκ² μŠ΅λ‹ˆκΉŒ?

@olleolleolle λ„€ 쒋은 μ§€μ μž…λ‹ˆλ‹€! λ‚˜λŠ” 이것을 μ–ΈκΈ‰ν•¨μœΌλ‘œμ¨ 이것이 μžλ™μœΌλ‘œ λ‹«νž 것이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€ :(

이거 μΆœμ‹œ μ•ˆλœκ±°κ°™μ€λ°? 1.0 이전에 λ§ˆμ΄λ„ˆ 릴리슀λ₯Ό λ³Ό κ°€λŠ₯성이 μžˆμŠ΅λ‹ˆκΉŒ? :speak_no_evil:

@franzliedke λ§žμŠ΅λ‹ˆλ‹€. 이것은 ν˜„μž¬ v1.0에 ν¬ν•¨λ˜μ–΄ 있으며 κ½€ 였래 전에 λ³‘ν•©λ˜μ—ˆλ‹€λŠ” 데 λ™μ˜ν•©λ‹ˆλ‹€ πŸ˜….
μš°λ¦¬λŠ” v1.0을 ν–₯ν•΄ λ§Žμ€ 진전을 이뀘고 μš°λ¦¬λŠ” 그것을 λ„˜μ–΄μ„œλŠ” 데 μƒλ‹Ήνžˆ 가깝닀고 λ§ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.
μ‹œκ°„μ„ 쑰금만 더 μ£Όμ„Έμš”. κΈ°λ‹€λ¦΄λ§Œν•œ κ°€μΉ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€ πŸ˜ƒ

λ“£κΈ° 쒋은!

μ•½κ°„ κΉŒλ‹€λ‘­κ²Œ ν•΄μ„œ μ£„μ†‘ν•©λ‹ˆλ‹€. μ˜€ν”ˆ μ†ŒμŠ€κ°€ μ–Όλ§ˆλ‚˜ 슀트레슀λ₯Ό μ£ΌλŠ”μ§€ μ••λ‹ˆλ‹€. ν›Œλ₯­ν•œ μ†Œν”„νŠΈμ›¨μ–΄μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€!

μ „ν˜€ @franzliedke !
쑰금 더 빨리 v1.0을 μ‘°μ€€ν•˜κ³  λ¦΄λ¦¬μŠ€ν•΄μ•Ό ν•©λ‹ˆλ‹€.
λŸ°μΉ­μ„ λ†“μΉ˜μ§€ μ•ŠμœΌλ €λ©΄ repoλ₯Ό μ‹œμ²­ν•˜μ„Έμš” πŸ‘

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰