рдпрд╣ рдореБрдЭреЗ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдорд┐рдбрд▓рд╡реЗрдпрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦрд░рд╛рдм рд╣реИрдВред рдЗрд╕рдХреЗ рдмрджрд▓реЗ рдХреЛрдИ рдХреБрдЫ рд╕рд╣рд╛рдпрддрд╛ рджреЗ рд╕рдХрддрд╛ рд╣реИред
# play.rb
require 'faraday'
class MyMiddleware
attr_reader :options
def initialize(app, options={})
<strong i="6">@app</strong> = app
<strong i="7">@options</strong> = options
end
def call(env)
@app.call(env)
end
end
# This doesn't seem to work either, removing for now.
# Faraday.register_middleware :request, my_middlware: lambda { MyMiddleware }
client = Faraday.new do |conn|
# conn.request :my_middleware, foo: :bar
conn.request MyMiddleware, foo: :bar
end
response = client.get('http://jasonwaldrip.com/')
$ ruby play.rb
/Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday.rb:64:in `lookup_middleware': MyMiddleware is not registered on Faraday::Request (RuntimeError)
from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday/builder.rb:146:in `use_symbol'
from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday/builder.rb:100:in `request'
from play.rb:19:in `block in <main>'
from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday/connection.rb:65:in `initialize'
from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday.rb:11:in `new'
from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday.rb:11:in `new'
from play.rb:18:in `<main>'
рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ conn.use
рдХреЗ рдмрдЬрд╛рдп conn.request
ред рдпрд╣ рдлреИрд░рд╛рдбреЗ :: рдЕрдиреБрд░реЛрдз рдореЗрдВ рдорд╛рдИ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред
@technoweenie рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдХрд░рдирд╛ рдерд╛ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкрдврд╝рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рдХреИрд╕реЗред
@jwaldrip рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдирд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдЖрдк conn.request
рдХрд╣ рд╕рдХреЗрдВрдЧреЗред
рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдирд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдЖрдк conn.request рдХрд╣ рд╕рдХреЗрдВрдЧреЗред
рд╕рд╛рде рд╣реА, рдЖрдкрдХреЛ рдЙрд╕ рдкреНрд░рддреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдкрдиреЗ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдерд╛, рди рдХрд┐ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХрд╛ред рдкреНрд░рддреАрдХ рдХреЗрд╡рд▓ рдкреВрд░реНрдг рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЙрд░реНрдЯрдХрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред conn.request(:json)
рдореВрд▓ рд░реВрдк рд╕реЗ Faraday::Request::JSON
рдЬреИрд╕рд╛ рд╣реА рд╣реИред
рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
: +1: рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдереАред
@jwaldrip рд╕рд╣реА рд╣реИ рдХрд┐ рдпрд╣ рдЦрд░рд╛рдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЬреЛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдПрдХ рдкреНрд░рддреАрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рдХреЗ рддрд╣рдд рдкрдВрдЬреАрдХреГрдд рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди conn.request
рд╕реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдкреНрд░рддреАрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛ред
рд╣рдореЗрдВ рдпрд╣ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░рд╛ рдЬрд╛рдП, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рдПред
рдореБрдЭреЗ рдпрд╣ рдХрд╛рдо рдорд┐рд▓ рдЧрдпрд╛, рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛ред рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдпрд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд░реАрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдЖрдкрдиреЗ рдЕрдВрддрд┐рдо рд╕реЗрдЯрдЕрдк рдХреИрд╕рд╛ рджреЗрдЦрд╛? @jwaldrip
рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрднреА рдХреБрдЫ рд▓рд┐рдЦрд╛ рд╣реБрдЖ рдерд╛? рдореБрдЭреЗ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рд┐рд░ рдкреАрдЯрдирд╛ рдкрдбрд╝рд╛ред
@stefansedich рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рдж рдХреЛрдИ рдкреНрд░рддреНрдпрдХреНрд╖ рдЕрдиреБрд╡рд░реНрддреА рдпрд╛ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ (1.0) рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрд░ рдХреБрдЫ рднрд╛рд░реА рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдлрд┐рд░ рд╡ред
рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
@maxim рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реИ , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рд╕реБрдзрд╛рд░ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, request
рдФрд░ response
рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдкрдВрдЬреАрдХреГрдд рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо-рдирд┐рд░реНрдорд┐рдд рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ .use
рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рддреЛ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рдо рдХрд░реЗрдЧрд╛:
client = Faraday.new do |conn|
conn.use MyMiddleware, foo: :bar
end
рдПрдХ рдкреВрд░реНрдг рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░реЗрдЧрд╛ред
@maxim рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рд╕реБрдзрд╛рд░ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдкрдВрдЬреАрдХреГрдд рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо-рдирд┐рд░реНрдорд┐рдд рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ .use рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рддреЛ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рдо рдХрд░реЗрдЧрд╛:client = Faraday.new do |conn| conn.use MyMiddleware, foo: :bar end
@iMacTia рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ https://lostisland.github.io/faraday/middleware/custom . рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
@wilsonsilva рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИрдВ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ ред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рд╕реЗ рдЪреВрдХ рдЧрдпрд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдПрдХ рдкреВрд░реНрдг рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░реЗрдЧрд╛ред