Faraday: ๋กœ๊ฑฐ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2013๋…„ 10์›” 28์ผ  ยท  9์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: lostisland/faraday

์ด ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ์€ ๋กœ๊ฑฐ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์•„์ง ํ—ค๋”์™€ ๋ณธ๋ฌธ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

require 'faraday'

conn = Faraday.new(url: "http://google.com") {|config| config.response :logger}
conn.get "/"
/Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response/logger.rb:31:in `dump_headers': undefined method `map' for nil:NilClass (NoMethodError)
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response/logger.rb:25:in `block in on_complete'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/logger.rb:376:in `add'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/logger.rb:404:in `debug'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response/logger.rb:25:in `on_complete'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response.rb:9:in `block in call'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response.rb:63:in `on_complete'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response.rb:8:in `call'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response/logger.rb:20:in `call'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/connection.rb:253:in `run_request'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/connection.rb:106:in `get'
    from faraday_bug.rb:4:in `<main>'

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋ฏธ๋“ค์›จ์–ด๋Š” HTTP ์š”์ฒญ ์—†์ด, ์ฆ‰ ์–ด๋Œ‘ํ„ฐ ์—†์ด ์ž‘๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Faraday.new(url: "http://google.com") do |conn|
  conn.response :logger
  conn.adapter Faraday.default_adapter
end

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

์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋ฏธ๋“ค์›จ์–ด๋Š” HTTP ์š”์ฒญ ์—†์ด, ์ฆ‰ ์–ด๋Œ‘ํ„ฐ ์—†์ด ์ž‘๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Faraday.new(url: "http://google.com") do |conn|
  conn.response :logger
  conn.adapter Faraday.default_adapter
end

@mislav ๊ฐ€ ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์ด์ง€๋งŒ ๊ฒฐ๊ณผ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋” ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@sethvargo์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๊ฐ€ ๋” ์ข‹์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒํƒœ์—์„œ Faraday.new ๋กœ ์ด๋™ํ•œ ๋‹ค์Œ conn.response :logger . ๊ธฐ๋ณธ์ ์œผ๋กœ adapter ๊ฐ€ default_adapter ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ ์˜ค๋ฅ˜์— ์ƒ๋‹นํžˆ ํ˜ผ๋ž€์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์˜ค๋ฅ˜๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ด๊ฒƒ์ด ์›๋ž˜ ์˜ค๋ฅ˜์˜ ๋˜ ๋‹ค๋ฅธ ์ฆ์ƒ์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ์ด ๋ฌธ์ œ์— ๋ถ€๋”ช์ณค๋‹ค. ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์€ Faraday๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด '์–ด๋Œ‘ํ„ฐ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์Œ' ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋จธ๋ฆฌ๋ฅผ ๊ธ๋Š” ์ผ์„ ๋งŽ์ด ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@mislav ๋ฐฉ๊ธˆ @bluefuton ์ด ๋งํ•œ ๊ฒƒ์„ ์ •ํ™•ํžˆ ๋ง

์•„, ๋˜‘๊ฐ™์€ ๊ฒƒ์— ๋ฌผ๋ฆฐ ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์‹ค์ˆ˜์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๋น„๋ฐ€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. (๋ช…์‹œํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ž˜๋ชป ๊ฐ€์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋Œ‘ํ„ฐ ์‚ฌ์–‘์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.)

@mislav "์–ด๋Œ‘ํ„ฐ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์Œ"๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ํ’€ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋˜๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ "๊ธฐ๋ณธ ์–ด๋Œ‘ํ„ฐ"๋ฅผ ๊ฐ€์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์˜ค, @pengwynn๋‹˜ , ๋‹น์‹ ๋„ ์ด ์กฐ์ง์˜ ์ผ์›์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•„์ฐจ๋ ธ์Šต๋‹ˆ๋‹ค. Mislav๋Š” ์œ„์— ๋‹ต์žฅ์„ ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ด์— ๋Œ€ํ•œ ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ฐœ๊ฐ€๋ฝ์„ ๋ฐŸ์„ ์˜๋„๋Š” ์—†์Šต๋‹ˆ๋‹ค. Mislav๊ฐ€ ์ด๋Ÿฌํ•œ ์ „ํ™”๋ฅผ ๊ฑธ๋ฉด ๊ทธ๋ฅผ ์šฐํšŒํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :)

๋ฉ”์‹œ์ง€๊ฐ€ ๋” ์ข‹์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋น„๋ก ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด, ์–ด๋–ค ๋ฏธ๋“ค์›จ์–ด๋„ ์–ด๋Œ‘ํ„ฐ ์—†์ด๋Š” ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠนํžˆ ์ด ๋ฏธ๋“ค์›จ์–ด์— ๋Œ€ํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐœ์„ ํ•˜๋ฉด ๋‹ค๋ฅธ ๋ฏธ๋“ค์›จ์–ด์— ๋‹ค๋ฅธ ์ˆ˜์ˆ˜๊ป˜๋ผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋‚จ์Šต๋‹ˆ๋‹ค.

์ ์ ˆํ•œ ํ•ด๊ฒฐ์ฑ…์€ Connection ๊ฐœ์ฒด๊ฐ€ ์Šคํƒ์— ์–ด๋Œ‘ํ„ฐ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์„ ๋•Œ Faraday๊ฐ€ ์ผ์ฐ ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. #47, #121, #170 ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ตฌ๋…ํ•˜์‹ญ์‹œ์˜ค

@mislav ์•„ํ•˜, ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋กœ๊ฑฐ์˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด pull ์š”์ฒญ์„ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ๋‹นํžˆ ๊ฐ„๋‹จํ•œ ๋ณ€๊ฒฝ์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ ์ ˆํ•œ ์ˆ˜์ • ์‚ฌํ•ญ๋„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋” ์–ด๋ ค์›Œ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋‹ฌ์„ฑํ•  ์‹œ๊ฐ„์ด๋‚˜ ๊ธฐ์ˆ ์ด ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

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