Vcr: рдПрдХрд╛рдзрд┐рдХ рдХреИрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдХреИрд╕реЗрдЯ рдорд░реНрдЬ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдЬреВрди 2013  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vcr/vcr

рдирдорд╕реНрддреЗ,

рдХреНрдпрд╛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдХреИрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рд╣реЛрдЧрд╛ред

рдзрдиреНрдпрд╡рд╛рдж,
рд░реЛрдмрд┐рди

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

рдЖрдк рдХреИрд╕реЗрдЯ рдШреЛрдВрд╕рд▓рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

VCR.use_cassette("outer") do
  make_some_http_request

  VCR.use_cassette("inner_1") do
    make_some_other_http_request

    VCR.use_cassette("inner_2") do
      make_yet_another_request
    end
  end
end

рдЬрдм рдХреЛрдИ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╡реАрд╕реАрдЖрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ HTTP рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рддрдо рдХреИрд╕реЗрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреИрд╕реЗрдЯ рд╕реНрдЯреИрдХ рдХреА рдЦреЛрдЬ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЕрдВрддрд░рддрдо рдХреИрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдирдП рдЕрдиреБрд░реЛрдз рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ?

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

рдЖрдк рдХреИрд╕реЗрдЯ рдШреЛрдВрд╕рд▓рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

VCR.use_cassette("outer") do
  make_some_http_request

  VCR.use_cassette("inner_1") do
    make_some_other_http_request

    VCR.use_cassette("inner_2") do
      make_yet_another_request
    end
  end
end

рдЬрдм рдХреЛрдИ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╡реАрд╕реАрдЖрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ HTTP рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рддрдо рдХреИрд╕реЗрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреИрд╕реЗрдЯ рд╕реНрдЯреИрдХ рдХреА рдЦреЛрдЬ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЕрдВрддрд░рддрдо рдХреИрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдирдП рдЕрдиреБрд░реЛрдз рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ?

рд╣рд╛рдБ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдореИрдВ рдЕрднреА рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП rspec рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЬреИрд╕реЗ vcr: {cassette_names: %w(fb-login linkedin-login)} ред

рд╡реИрд╕реЗ рднреА, рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдЕрднреА рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП rspec рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЬреИрд╕реЗ vcr: {cassette_names: %w(fb-login linkedin-login)} ред

рдореИрдВ рдЙрд╕ рдПрдкреАрдЖрдИ рдХреА рдЕрдкреАрд▓ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдПрдХ рдирдпрд╛ HTTP рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕ рдХреИрд╕реЗрдЯ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рд╣реИ?

рд╕рдореНрдореЗрд▓рди рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд┐рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕реЗ рдиреЗрд╕реНрдЯрд┐рдВрдЧ use_cassette рдХрдиреНрд╡реЗрдВрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рдмрд╕реЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЖрд╕рдкрд╛рд╕ VCR.use_cassette рдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭреВрдВрдЧрд╛ред

рд╕рдореНрдореЗрд▓рди рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд┐рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕реЗ рдиреЗрд╕реНрдЯрд┐рдВрдЧ use_cassette рдХрдиреНрд╡реЗрдВрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рдмрд╕реЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЖрд╕рдкрд╛рд╕ VCR.use_cassette рдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭреВрдВрдЧрд╛ред

рд▓реЗрдХрд┐рди рдлрд┐рд░ рдкрд╣рд▓реА рдХреИрд╕реЗрдЯ рдореЗрдВ рдХреБрдЫ рднреА рд░рд┐рдХреЙрд░реНрдб рдХреИрд╕реЗ рд╣реЛрдЧрд╛?

рд╕реНрдкрд╖реНрдЯ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЙрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдХреЗрд╡рд▓ рдмрд╛рд╣рд░реА рдПрдХ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрд╕реЗ рдЙрд╕ рдХреИрд╕реЗрдЯ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ):

VCR.use_cassette("outer") do
  # <- requests here get recorded to outer

  VCR.use_cassette("inner") do
    # <- requests here get recorded to inner
  end

  # <- requests here get recorded to outer as well  
end

рдпрджрд┐ рд╡реАрд╕реАрдЖрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рджреЛ рдХреИрд╕реЗрдЯ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреЛрдИ рднреА рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ ... рддреЛ рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдХрднреА рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХрд╛рдлреА рдЙрдЪрд┐рддред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ record: :none рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реАрд╕реАрдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдВрдЧреЗред рд╕рдордп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрдХреНрд░рд┐рдпрд╛ :)

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