NetX :: HTTPUnix를 사용하는 유닉스 소켓을 사용하여 HTTP 요청을하기 위해 사용자 정의 패러데이 어댑터를 조합 해 보았습니다. 코드는 다음과 같습니다.패러데이를 사용하여 유닉스 소켓을 통한 HTTP 요청
module Faraday
class Adapter
class NetHttpUnix < Faraday::Adapter::NetHttp
def perform_request(http, env)
if :get == env[:method] and !env[:body]
# prefer `get` to `request` because the former handles gzip (ruby 1.9)
http.get env[:url], env[:request_headers]
else
http.request create_request(env)
end
end
def create_request(env)
request = Net::HTTPGenericRequest.new \
env[:method].to_s.upcase, # request method
!!env[:body], # is there request body
:head != env[:method], # is there response body
"/", # request uri path (i'm just hard coding/because URI::Generic doesn't have a uri_path method
env[:request_headers] # request headers
if env[:body].respond_to?(:read)
request.body_stream = env[:body]
else
request.body = env[:body]
end
request
end
def net_http_connection(env)
socket = env[:url].to_s
NetX::HTTPUnix.new(socket)
end
end
end
end
Faraday::Adapter.register_middleware net_http_unix: Faraday::Adapter::NetHttpUnix
그러나이 어댑터로 요청을하면 Faraday :: ConnectionError가 표시됩니다. 예외 백 트레이스를 보면 코드가 http.rb의 TCP 소켓을 열려고 시도하고 있음을 알 수 있습니다.
이미 유닉스 소켓에서 작동하는 패러데이 어댑터가 있습니까? 나는 바퀴를 여기에서 재발 명하고 싶지 않다.
인수를 여러 줄로 나눌 경우 '(...)'를 사용하여 줄 바꿈을 캡슐화하십시오. 여기서 백 슬래시는 매우 불규칙합니다. – tadman