Railsのルーティング情報からOpenAPI形式のドキュメントを生成し、閲覧・編集・管理するためのrakeタスクの提供をします。
bundle exec rake routes:oas:init # 初期化
bundle exec rake routes:oas:docs # ドキュメント生成
bundle exec rake routes:oas:ui # ドキュメント閲覧
bundle exec rake routes:oas:editor # ドキュメント編集
bundle exec rake routes:oas:monitor # ドキュメント監視
bundle exec rake routes:oas:build # ドキュメントビルド
bundle exec rake routes:oas:clean # ドキュメント清掃
bundle exec rake routes:oas:analyze # ドキュメント分解・分析
bundle exec rake routes:oas:deploy # ドキュメントデプロイ
railsアプリケーションのGemfileに以下を追加します。
group :development do
gem 'r2-oas'
end
もしSwaggerEditorやSwaggerUIを使ってドキュメントを閲覧・編集する場合には以下のものが必要です。
swaggerapi/swagger-ui:latest
docker imageswaggerapi/swagger-editor:latest
docker imagechromedriver
もしダウンロードしてなかったら以下のコマンドでダウンロードできます。
$ docker pull swaggerapi/swagger-editor:latest
$ docker pull swaggerapi/swagger-ui:latest
$ brew cask install chromedriver
gemをrequire後、以下のrakeタスクを実行するだけです。
$ bundle exec rake routes:oas:init
create oas_docs
create oas_docs/.paths
create oas_docs/plugins/helpers
create oas_docs/tasks/helpers
create oas_docs/plugins/.gitkeep
create oas_docs/plugins/helpers/.gitkeep
create oas_docs/tasks/.gitkeep
create oas_docs/tasks/helpers/.gitkeep
$ bundle exec rake routes:oas:docs
$ bundle exec rake routes:oas:editor
公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas
railsプロジェクトのルートディレクトリで以下のコマンドが実行可能です。
一般的なコマンドの使用例を示します。
r2-oas
の初期化
$ bundle exec rake routes:oas:init
create oas_docs
create oas_docs/.paths
create oas_docs/plugins/helpers
create oas_docs/tasks/helpers
create oas_docs/plugins/.gitkeep
create oas_docs/plugins/helpers/.gitkeep
create oas_docs/tasks/.gitkeep
create oas_docs/tasks/helpers/.gitkeep
ドキュメントの生成
$ bundle exec rake routes:oas:docs # Generate docs
$ PATHS_FILE="oas_docs/schema/paths/api/v1/task.yml" bundle exec rake routes:oas:docs # Generate docs by specify unit paths
SwaggerEditorの起動
$ bundle exec rake routes:oas:editor # Start swagger editor
$ PATHS_FILE="oas_docs/schema/paths/api/v1/task.yml" bundle exec rake routes:oas:editor # Start swagger editor by specify unit paths
SwaggerUIの起動
$ bundle exec rake routes:oas:ui # Start swagger ui
$ PATHS_FILE="oas_docs/schema/paths/api/v1/task.yml" bundle exec rake routes:oas:ui # Start swagger ui by specify unit paths
ドキュメントのビルド
※プラグインが適用されます。
$ bundle exec rake routes:oas:build
ドキュメントの分割
OpenAPI形式のドキュメントを読み取り、それをいくつかの部分に分割してソースファイルを生成します
$ OAS_FILE="~/Desktop/swagger.yml" bundle exec rake routes:oas:analyze
実際の使用例を見るにはこちらのリポジトリを参考にしてください。
- yukihirop/r2oas-k8s-example
- yukihirop/r2oas-moneyforward-example
- yukihirop/r2oas-leaddesk-example
- yukihirop/r2oas-advanced-example
- Rails (>= 4.2.5.1)
- Ruby (>= 2.5.0)
- Rails Engine Routing
- Rails Normal Routing
OpenAPIの3.0.0をサポートしてます。
公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas/#/schema/3.0.0
ツールを便利にするために、設定よりも制約があります。
-
タグ名
はコントローラー名
を表しており、pathsファイル名とパス
を決定するのに使用されます。- 例えば、
コントローラー名
がApi::V1::UsersController
ならば、タグ名
はapi/v1/user
になります。そして、pathsファイル名とパス
はapi/v1/user.yml
となります。
- 例えば、
-
components/{schemas, requestBodies, ...}名
の_
は保存時に/
に変換されます。hennkannsaremasu.- 例えば、
components/schemas名
がApi_V1_User
なら、components/schemasのファイル名とパス
はapi/v1/user.yml
となります。 - フォーマットは、
Namespace1_Namespace2_Model
です。
- 例えば、
-
components/{schemas, requestBodies, ...}名
の.
は保存時に/
に変換されます。hennkannsaremasu.- 例えば、
components/schemas名
がapi.v1.User
なら、components/schemasのファイル名とパス
はapi/v1/user.yml
となります。 - フォーマットは、
namespace1.namespace2.Model
です。
- 例えば、
全ての設定は オプショナル
です。設定してもしなくても構いません。
公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas/#/setting/configure
/bin/bash devscript/all_support_ruby.sh bundle
.
.
.
===== Bundle install for All Support Ruby Result =====
ruby-2.5.8: 0
ruby-2.6.6: 0
ruby-2.7.1: 0
======================================================
rubyのバージョンを 2.6.6
と 2.7.1
に指定する場合
/bin/bash devscript/all_support_ruby.sh bundle 2.6.6 2.7.1
.
.
.
===== Bundle install for All Support Ruby Result =====
ruby-2.6.6: 0
ruby-2.7.1: 0
======================================================
/bin/bash devscript/all_support_ruby.sh rspec
.
.
.
===== Rspec for All Support Ruby Result =====
ruby-2.5.8: 0
ruby-2.6.6: 0
ruby-2.7.1: 0
=============================================
rubyのバージョンを 2.6.6
と 2.7.1
に指定する場合
/bin/bash devscript/all_support_ruby.sh rspec 2.6.6 2.7.1
.
.
.
===== Rspec for All Support Ruby Result =====
ruby-2.6.6: 0
ruby-2.7.1: 0
=============================================
rack-corsを使用する事でCORSを可能にします。
require 'rack/cors'
use Rack::Cors do
allow do
origins '*'
resource '*', headers: :any, methods: [ :get, :post, :put, :delete, :options ]
end
end
before
ブロックにCORSヘッダーを設定できます。
before do
header['Access-Control-Allow-Origin'] = '*'
header['Access-Control-Request-Method'] = '*'
end
The gem is available as open source under the terms of the MIT License.
- Fork it ( https://github.com/yukihirop/r2-oas/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request