2015-01-26 5 views
1

저는 하드웨어의 다른 부분에서 실행되는 웹 응용 프로그램을 가지고 있습니다. 대부분 웹 TV는 스마트 TV와 셋톱 박스로 구성되어 있습니다.WEBrick 요격 요청

내 웹 앱에 로컬 디버깅을 위해 앱을 설정하는 루비 스크립트가 포함되어 있습니다. 이 스크립트는 내 앱을 빌드하고 파일 변경 사항을 수신하며 간단한 WEBrick 서버를 사용하여 앱을 호스팅합니다.

이제 특정 하드웨어에 문제가 있습니다. 이 하드웨어는 POST 요청에서 web app와 동일한 호스트에서 실행중인 health_check API에 대한 성공 응답을 얻고 웹 응용 프로그램을로드합니다.

이 요청을 가로 채서 스푸핑하여 하드웨어가 클라이언트를로드하기를 바랄뿐입니다. 지금까지이 같은까지 왔 :

def start_server 
    require 'webrick' 

    root = File.expand_path 'public' 
    request_callback = Proc.new { |req, res| 
     if req.path =~ /health_check/ 
      # return 200 response somehow? 
     end 
    } 
    server = WEBrick::HTTPServer.new :Port => 5000, :DocumentRoot => root, :RequestCallback => request_callback 
    server.start 
end 

내가 200에 상태를 설정하는 응답 객체를 수정할 수 있지만 여전히 돌아 끝나는 404

답변

2

당신은 할 필요가 없습니다 " 인터셉트 "하여 모든 요청을 확인하고 특정 경로를 확인하십시오. mount_proc을 원하면 proc을 사용하여 특정 경로를 처리하면됩니다.

server.start하기 전에 다음을 추가

server.mount_proc '/health_check' do |req, res| 
    res.body = 'what what' # your content here 
end 

당신은 아마 당신이이 동작을 필요로 어떤 사용자 정의 하드웨어에서 실행하고 있는지 확인하기 위해 점검이 포장 할 수 있습니다.

WEBrick docs의 Custom Behavior을 참조하십시오.