Faraday: рдирдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдЬреБрд▓ре░ 2019  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: lostisland/faraday

рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА

  • рдлреИрд░рд╛рдбреЗ рд╕рдВрд╕реНрдХрд░рдг: рдорд╛рд╕реНрдЯрд░
  • рд░реВрдмреА рд╕рдВрд╕реНрдХрд░рдг: 2.6.3

рдореБрджреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг

рдлреИрд░рд╛рдбреЗ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдкрд░ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИред рдЬрд╣рд╛рдВ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рд░реВрдмреА рдСрди рд░реЗрд▓реНрд╕ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИред рд▓рд╛рд▓ рдорд╛рдорд▓реЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛/рдЪрд╛рд╣рддреА рд╣реВрдВ

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

  • рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдПрдБред
  • usage рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
  • рдлрд╝реБрдЯрд░ рдЕрдЧрд▓реЗ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЖрдЧреЗ рд╕рд╣реА рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ (https://lostisland.github.io/faraday/usage/streaming)
  • рдЙрдкрдпреЛрдЧ рдореЗрдВ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдиреЛрдЯрд┐рд╕ :scream_cat:

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕ рдкрд░рд╡рд░рд┐рд╢ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЬрд╡рд╛рдм рдореЗрдВ, рдореИрдВрдиреЗ рдлреИрд░рд╛рдбреЗ рдЯреЗрд╕реНрдЯ рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдЗрд╡ рдЯреЗрд╕реНрдЯ/рдпреВрдирд┐рдЯ рдФрд░ рдЖрд░рдПрд╕рдкреАрдИрд╕реА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ: #1000ред рдмрд╛рд╣рд░реА рдкрд░реАрдХреНрд╖рдг рдбрдмрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рдЖрд░рдПрд╕рдкреАрд╕реА, рдореЛрдЪрд╛, рд╡реЗрдмрдореЙрдХ, рдЖрджрд┐) рдХреЗ рдмрдЬрд╛рдп рдлреИрд░рд╛рдбреЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рд╣реИред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕ рдкрд░рд╡рд░рд┐рд╢ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЬрд╡рд╛рдм рдореЗрдВ, рдореИрдВрдиреЗ рдлреИрд░рд╛рдбреЗ рдЯреЗрд╕реНрдЯ рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдЗрд╡ рдЯреЗрд╕реНрдЯ/рдпреВрдирд┐рдЯ рдФрд░ рдЖрд░рдПрд╕рдкреАрдИрд╕реА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ: #1000ред рдмрд╛рд╣рд░реА рдкрд░реАрдХреНрд╖рдг рдбрдмрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рдЖрд░рдПрд╕рдкреАрд╕реА, рдореЛрдЪрд╛, рд╡реЗрдмрдореЙрдХ, рдЖрджрд┐) рдХреЗ рдмрдЬрд╛рдп рдлреИрд░рд╛рдбреЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рд╣реИред

рдореИрдВрдиреЗ рдХрднреА рднреА рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЯрд╛рдЗрдордЖрдЙрдЯ, рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдЖрджрд┐ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рд╡рд┐рд╖рдп рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдкреАрдЖрд░ # 998 рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ

рдУрд╣, рд╢рд╛рдпрдж рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдлреИрд░рд╛рдбреЗ рдкрд░реАрдХреНрд╖рдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: /

#1000 рдореЗрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ Faraday::Adapter::Test::Stubs рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдлреИрд░рд╛рдбреЗ рдЕрдиреБрд░реЛрдз/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЪрдХреНрд░реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдЯрдм рдСрдмреНрдЬреЗрдХреНрдЯред рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ http рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдирдХрд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  it 'parses name' do
    # this block yields a rack response: an array with:
    # response status, http header hash, and response body
    stubs.get('/ebi') do |env|
      [
        200,
        { 'Content-Type': 'application/javascript' },
        '{"name": "shrimp"}'
      ]
    end

    expect(client.sushi('ebi')).to eq('shrimp')
    stubs.verify_stubbed_calls
end

рдореИрдВ рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдкрдврд╝рд╛ред рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рдореИрдВ #1000 рдореЗрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛):

  it 'handles exception' do
    stubs.get('/ebi') do
      raise Faraday::ConnectionFailed, nil
    end

    expect { client.sushi('ebi') }.to raise_error(Faraday::ConnectionFailed)
    stubs.verify_stubbed_calls
  end

рдореИрдВ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдореЙрдХрд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рджреЛрд╣рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрднреА рднреА рдкреВрд░реЗ рдлреИрд░рд╛рдбреЗ рдЕрдиреБрд░реЛрдз рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдбреЗрд╡рд▓рдкрд░ рд╡реИрд╕реЗ рднреА рдЖрд░рдПрд╕рдкреАрд╕реА рдореЛрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЙрддреНрдХреГрд╖реНрдЯ рдЖрд░рдПрд╕рдкреАрд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╕реЗрд╡рд╛ рджреА рдЬрд╛рдПрдЧреАред

#1000 . рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jedeleh picture jedeleh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amrrbakry picture amrrbakry  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jeffb-stell picture jeffb-stell  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

olleolleolle picture olleolleolle  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

iMacTia picture iMacTia  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ