2012-10-26 7 views
3

나는 GUI를 사용하여 Grape Intridea와 grape-swagger gem을 사용하여 문서 용 Swagger UI를 사용하도록 Rails 응용 프로그램을 재 작성하고 있습니다.포도와 함께 Rails App에 Swagger-UI는 어디에 배치해야합니까?

그래서 간단한 hello world 앱을 실행합니다. swagger 테스트에서 발견 할 수있는 것처럼 보이지만, JSON 구문 분석 오류가 발생하고 있습니다 (다음에 살펴 보겠습니다). Rails 응용 프로그램에 swagger UI를 넣고 싶습니다. /swagger_doc.json을 가리키고 있습니다. 따라서 문서를 제대로 만들 수 있는지 확인할 수 있습니다.

어디에서 레일 앱에 Swagger UI를 넣을 수 있습니까? 공개 디렉토리?

답변

6

좋아요. 이전에 공용 디렉토리에 모든 것을 넣으려고했을 때 아무 것도 보여주지 않는 몇 가지 불안감을 발견했습니다.

myapp/public/swagger-ui-1.1.1/files 

1)이 차이하지만 난 레일 애플 리케이션과 config.ru에서 포도 응용 프로그램을로드하는 순서를해야하는 경우 나도 몰라 라우팅이 처리 된 방법에 변화를 보였다. .. 어떻게 작동하는지 더 이해해야합니다. 하지만 지금은 노선 안쪽에 설치된 포도 앱이 내가 기대하는 바를 수행합니다. 그 결과 swagger-ui가 일반인에게 압축이 풀린 후

http://appurl/swagger-ui-1.1.1/ 

이 나에게 깔끔한 UI를 제공합니다. 더 많은 정보가 있으면 더 자세히 설명해 드리겠습니다.

EDIT : 여기 나와 같은 도움의 손길을 필요로하는 다른 사용자가 있기 때문에 아래에서 간략하게 설명하겠습니다. 꽤 쉽습니다.

자산 파이프 라인의 하위 디렉토리를 생성/정리할 때 - 공급 업체에서하던 일입니다. lib 디렉토리를 swagger UI에서이 하위 디렉토리로 복사하십시오. 색인 작업을 사용하여 기본 docs_controller를 만듭니다 (비워 둘 수 있음). views/docs 디렉토리를 만들고 swagger-ui index.html을 복사합니다. index.html에서 stylesheet 및 javascript 호출을 asset-tags로 변경하십시오. 문서에 대한 리소스 경로를 추가하십시오. window.swaggerUI를 호출하는 javascript 함수에서 discoveryURL을 "http : //my.root.url/swagger_doc.json"(이상적으로는 ENV 변수)으로 변경하십시오.

그게 전부입니다. 이제 효과가 있습니다. 한 가지 문제는 Swagger가 docs 하위 도메인에서 실행될 때 api 하위 도메인에서 내 포도 API를 사용하는 것이 CORS라는 점입니다. 포도를 쉽게 추가 할 수 있습니다 :

before do 
    header "Access-Control-Allow-Origin", "http://#{ENV["BASE_URL"]}" 
    header "Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT" 
    header "Access-Control-Max-Age", "1728000" 
end 

포도의 api.rb와 같습니다. 모두가 누군가를 돕기를 바랍니다.

+1

덕분에 많은 도움이되었습니다. – 23tux

0

우리는 레일 응용 프로그램의 공용 디렉토리에있는 모든 자신감 UI를 넣어해야합니다. 그리고 아래 버전에서 사용하십시오.

보석 '포도', '~> 0.7.0' 보석 '포도 자신감', '~> 0.7.2'

때문에 '포도 자신감'보석이 최신 버전을 지원하지 않습니다.