さて、以前にすべてをパブリックディレクトリに置いてみたところ、何も表示されないスナフスがいくつか見つかりました。
myapp/public/swagger-ui-1.1.1/files
1)これが違いを生むべきかどうかはわかりませんが、config.ruでrailsアプリとgrapeアプリをロードした順序が、ルーティングの処理方法に違いをもたらしたようです...もっと理解する必要がありますそれがどのように機能するか。しかし、ルート内にマウントされたブドウアプリは、私が期待することを実行します。その結果、swagger-uiが公開されてから、
http://appurl/swagger-ui-1.1.1/
SwaggerUIを提供します。さらに詳細があれば、これに詳細を追加します。
編集:ここで助けを必要とする私のような他のユーザーがそこにいるので、私はそれを以下に概説します。とても簡単です。
アセットパイプラインに/swaggerサブディレクトリを作成します-私はベンダーの下でそれを行いました。libファイルをSwaggerUIからこれらのサブディレクトリにコピーします。インデックスアクションを使用して基本的なdocs_controllerを作成します(空にすることもできます)。views / docsディレクトリを作成し、swagger-uiindex.htmlをそのディレクトリにコピーします。index.htmlのasset-tagsへのスタイルシートとjavascriptの呼び出しを変更します。ドキュメントのリソースルートを追加します。window.swaggerUIを呼び出すjavascript関数のdiscoveryURLを「http://my.root.url/swagger_doc.json」(理想的にはENV変数から)に変更します。
それでおしまい。今はうまくいきます。apiサブドメインでGrapeAPIを使用して遭遇した1つの落とし穴は、Swaggerがdocsサブドメインで実行されていたときのCORSでした。次のようなものを追加することで、Grapeで簡単に修正できます。
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
Grapeapi.rbに。すべてが誰かを助けることを願っています。