Monitor docs
Prepare
Add this line to your application’s Gemfile:
group :development do
gem 'r2-oas'
end
Command
$ bundle exec rake routes:oas:monitor
Example
if there is routing like this:
$ bundle exec rake routes
Prefix Verb URI Pattern Controller#Action
api_v1_account_user_roles GET /api/v1/account_user_roles(.:format) api/v1/account_user_roles#index
new_api_v1_account_user_role GET /api/v1/account_user_roles/new(.:format) api/v1/account_user_roles#new
edit_api_v1_account_user_role GET /api/v1/account_user_roles/:id/edit(.:format) api/v1/account_user_roles#edit
api_v1_account_user_role GET /api/v1/account_user_roles/:id(.:format) api/v1/account_user_roles#show
PATCH /api/v1/account_user_roles/:id(.:format) api/v1/account_user_roles#update
PUT /api/v1/account_user_roles/:id(.:format) api/v1/account_user_roles#update
DELETE /api/v1/account_user_roles/:id(.:format) api/v1/account_user_roles#destroy
api_v1 POST /api/v1/accounts/:account_id/users(.:format) api/v1/account_user_role#create
api_v1_account_users GET /api/v1/accounts/:account_id/users(.:format) api/v1/users#index
new_api_v1_account_user GET /api/v1/accounts/:account_id/users/new(.:format) api/v1/users#new
edit_api_v1_account_user GET /api/v1/accounts/:account_id/users/:id/edit(.:format) api/v1/users#edit
api_v1_account_user GET /api/v1/accounts/:account_id/users/:id(.:format) api/v1/users#show
PATCH /api/v1/accounts/:account_id/users/:id(.:format) api/v1/users#update
PUT /api/v1/accounts/:account_id/users/:id(.:format) api/v1/users#update
DELETE /api/v1/accounts/:account_id/users/:id(.:format) api/v1/users#destroy
api_v1_accounts GET /api/v1/accounts(.:format) api/v1/accounts#index
POST /api/v1/accounts(.:format) api/v1/accounts#create
new_api_v1_account GET /api/v1/accounts/new(.:format) api/v1/accounts#new
edit_api_v1_account GET /api/v1/accounts/:id/edit(.:format) api/v1/accounts#edit
api_v1_account GET /api/v1/accounts/:id(.:format) api/v1/accounts#show
PATCH /api/v1/accounts/:id(.:format) api/v1/accounts#update
PUT /api/v1/accounts/:id(.:format) api/v1/accounts#update
DELETE /api/v1/accounts/:id(.:format) api/v1/accounts#destroy
GET /api/v1/account_user_roles(.:format) api/v1/account_user_roles#index
POST /api/v1/account_user_roles(.:format) api/v1/account_user_roles#create
GET /api/v1/account_user_roles/new(.:format) api/v1/account_user_roles#new
GET /api/v1/account_user_roles/:id/edit(.:format) api/v1/account_user_roles#edit
GET /api/v1/account_user_roles/:id(.:format) api/v1/account_user_roles#show
PATCH /api/v1/account_user_roles/:id(.:format) api/v1/account_user_roles#update
PUT /api/v1/account_user_roles/:id(.:format) api/v1/account_user_roles#update
DELETE /api/v1/account_user_roles/:id(.:format) api/v1/account_user_roles#destroy
api_v1_users GET /api/v1/users(.:format) api/v1/users#index
POST /api/v1/users(.:format) api/v1/users#create
new_api_v1_user GET /api/v1/users/new(.:format) api/v1/users#new
edit_api_v1_user GET /api/v1/users/:id/edit(.:format) api/v1/users#edit
api_v1_user GET /api/v1/users/:id(.:format) api/v1/users#show
PATCH /api/v1/users/:id(.:format) api/v1/users#update
PUT /api/v1/users/:id(.:format) api/v1/users#update
DELETE /api/v1/users/:id(.:format) api/v1/users#destroy
GET /api/v1/accounts(.:format) api/v1/accounts#index
POST /api/v1/accounts(.:format) api/v1/accounts#create
GET /api/v1/accounts/new(.:format) api/v1/accounts#new
GET /api/v1/accounts/:id/edit(.:format) api/v1/accounts#edit
GET /api/v1/accounts/:id(.:format) api/v1/accounts#show
PATCH /api/v1/accounts/:id(.:format) api/v1/accounts#update
PUT /api/v1/accounts/:id(.:format) api/v1/accounts#update
DELETE /api/v1/accounts/:id(.:format) api/v1/accounts#destroy
api_v2_custom_posts GET /api/v2/custom_posts(.:format) api/v2/custom_posts#index
POST /api/v2/custom_posts(.:format) api/v2/custom_posts#create
new_api_v2_custom_post GET /api/v2/custom_posts/new(.:format) api/v2/custom_posts#new
edit_api_v2_custom_post GET /api/v2/custom_posts/:id/edit(.:format) api/v2/custom_posts#edit
api_v2_custom_post GET /api/v2/custom_posts/:id(.:format) api/v2/custom_posts#show
PATCH /api/v2/custom_posts/:id(.:format) api/v2/custom_posts#update
PUT /api/v2/custom_posts/:id(.:format) api/v2/custom_posts#update
DELETE /api/v2/custom_posts/:id(.:format) api/v2/custom_posts#destroy
rails_subadmin /subadmin RailsAdmin::Engine
rails_admin /admin RailsAdmin::Engine
api_v2_posts GET /api/v2/posts(.:format) api/v2/posts#index {:format=>:json}
edit_api_v2_post GET /api/v2/posts/:id/edit(.:format) api/v2/posts#edit {:format=>:json}
api_v2_post GET /api/v2/posts/:id(.:format) api/v2/posts#show {:format=>:json}
PATCH /api/v2/posts/:id(.:format) api/v2/posts#update {:format=>:json}
PUT /api/v2/posts/:id(.:format) api/v2/posts#update {:format=>:json}
GET /api/v2/custom_posts(.:format) api/v2/custom_posts#index {:format=>:json}
GET /api/v2/custom_posts/:id/edit(.:format) api/v2/custom_posts#edit {:format=>:json}
GET /api/v2/custom_posts/:id(.:format) api/v2/custom_posts#show {:format=>:json}
PATCH /api/v2/custom_posts/:id(.:format) api/v2/custom_posts#update {:format=>:json}
PUT /api/v2/custom_posts/:id(.:format) api/v2/custom_posts#update {:format=>:json}
POST /api/v2/posts(.:format) api/v2/custom_posts#create {:format=>:json}
api_v1_posts GET /api/v1/posts(.:format) api/v1/posts#index
POST /api/v1/posts(.:format) api/v1/posts#create
new_api_v1_post GET /api/v1/posts/new(.:format) api/v1/posts#new
edit_api_v1_post GET /api/v1/posts/:id/edit(.:format) api/v1/posts#edit
api_v1_post GET /api/v1/posts/:id(.:format) api/v1/posts#show
PATCH /api/v1/posts/:id(.:format) api/v1/posts#update
PUT /api/v1/posts/:id(.:format) api/v1/posts#update
DELETE /api/v1/posts/:id(.:format) api/v1/posts#destroy
api_v1_tasks GET /api/v1/tasks(.:format) api/v1/tasks#index
POST /api/v1/tasks(.:format) api/v1/tasks#create
new_api_v1_task GET /api/v1/tasks/new(.:format) api/v1/tasks#new
edit_api_v1_task GET /api/v1/tasks/:id/edit(.:format) api/v1/tasks#edit
api_v1_task GET /api/v1/tasks/:id(.:format) api/v1/tasks#show
PATCH /api/v1/tasks/:id(.:format) api/v1/tasks#update
PUT /api/v1/tasks/:id(.:format) api/v1/tasks#update
DELETE /api/v1/tasks/:id(.:format) api/v1/tasks#destroy
tasks GET /tasks(.:format) tasks#index
POST /tasks(.:format) tasks#create
new_task GET /tasks/new(.:format) tasks#new
edit_task GET /tasks/:id/edit(.:format) tasks#edit
task GET /tasks/:id(.:format) tasks#show
PATCH /tasks/:id(.:format) tasks#update
PUT /tasks/:id(.:format) tasks#update
DELETE /tasks/:id(.:format) tasks#destroy
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
Routes for RailsAdmin::Engine:
dashboard GET / rails_admin/main#dashboard
index GET|POST /:model_name(.:format) rails_admin/main#index
new GET|POST /:model_name/new(.:format) rails_admin/main#new
export GET|POST /:model_name/export(.:format) rails_admin/main#export
bulk_delete POST|DELETE /:model_name/bulk_delete(.:format) rails_admin/main#bulk_delete
bulk_action POST /:model_name/bulk_action(.:format) rails_admin/main#bulk_action
show GET /:model_name/:id(.:format) rails_admin/main#show
edit GET|PUT /:model_name/:id/edit(.:format) rails_admin/main#edit
delete GET|DELETE /:model_name/:id/delete(.:format) rails_admin/main#delete
show_in_app GET /:model_name/:id/show_in_app(.:format) rails_admin/main#show_in_app
VS Code
If you use Swagger Viewer

I, [2019-06-29T00:52:29.568306 #16277] INFO -- : [R2-OAS] start
I, [2019-06-29T00:52:29.857556 #16277] INFO -- : [Build OAS schema files] start
I, [2019-06-29T00:52:29.857599 #16277] INFO -- : [Build OAS schema files] end
I, [2019-06-29T00:52:29.857609 #16277] INFO -- : [Build OAS docs from schema files] start
I, [2019-06-29T00:52:29.858201 #16277] INFO -- : Use schema file: oas_docs/src/openapi.yml
I, [2019-06-29T00:52:29.859837 #16277] INFO -- : Use schema file: oas_docs/src/paths/user.yml
I, [2019-06-29T00:52:29.861592 #16277] INFO -- : Use schema file: oas_docs/src/paths/api/v1/account_user_role.yml
I, [2019-06-29T00:52:29.865069 #16277] INFO -- : Use schema file: oas_docs/src/paths/api/v1/user.yml
I, [2019-06-29T00:52:29.866911 #16277] INFO -- : Use schema file: oas_docs/src/paths/api/v1/account.yml
I, [2019-06-29T00:52:29.868569 #16277] INFO -- : Use schema file: oas_docs/src/paths/api/v1/task.yml
I, [2019-06-29T00:52:29.869994 #16277] INFO -- : Use schema file: oas_docs/src/paths/api/v1/post.yml
I, [2019-06-29T00:52:29.871558 #16277] INFO -- : Use schema file: oas_docs/src/paths/api/v2/custom_post.yml
I, [2019-06-29T00:52:29.872561 #16277] INFO -- : Use schema file: oas_docs/src/paths/api/v2/post.yml
I, [2019-06-29T00:52:29.873925 #16277] INFO -- : Use schema file: oas_docs/src/paths/task.yml
I, [2019-06-29T00:52:29.874329 #16277] INFO -- : Use schema file: oas_docs/src/paths/rails_admin/engine.yml
I, [2019-06-29T00:52:29.877551 #16277] INFO -- : Use schema file: oas_docs/src/paths/rails_admin/main.yml
I, [2019-06-29T00:52:29.877670 #16277] INFO -- : Use schema file: oas_docs/src/externalDocs.yml
I, [2019-06-29T00:52:29.878309 #16277] INFO -- : Use schema file: oas_docs/src/tags.yml
I, [2019-06-29T00:52:29.878477 #16277] INFO -- : Use schema file: oas_docs/src/components/schemas/account_user_role.yml
I, [2019-06-29T00:52:29.878635 #16277] INFO -- : Use schema file: oas_docs/src/components/schemas/custom_post.yml
I, [2019-06-29T00:52:29.878778 #16277] INFO -- : Use schema file: oas_docs/src/components/schemas/user/new/200/get.yml
I, [2019-06-29T00:52:29.878955 #16277] INFO -- : Use schema file: oas_docs/src/components/schemas/user.yml
I, [2019-06-29T00:52:29.879127 #16277] INFO -- : Use schema file: oas_docs/src/components/schemas/account.yml
I, [2019-06-29T00:52:29.879270 #16277] INFO -- : Use schema file: oas_docs/src/components/schemas/task.yml
I, [2019-06-29T00:52:29.879441 #16277] INFO -- : Use schema file: oas_docs/src/components/schemas/engine.yml
I, [2019-06-29T00:52:29.879621 #16277] INFO -- : Use schema file: oas_docs/src/components/schemas/main.yml
I, [2019-06-29T00:52:29.879767 #16277] INFO -- : Use schema file: oas_docs/src/components/schemas/post.yml
I, [2019-06-29T00:52:29.879960 #16277] INFO -- : Use schema file: oas_docs/src/info.yml
I, [2019-06-29T00:52:29.880072 #16277] INFO -- : Use schema file: oas_docs/src/servers.yml
I, [2019-06-29T00:52:29.926654 #16277] INFO -- : [Build OAS docs from schema files] end
wait for single trap ...
When you press Ctrl + C after edit schema ,
^C
^CI, [2019-06-29T00:55:38.492337 #16277] INFO -- : [Analyze OAS file] start
I, [2019-06-29T00:55:38.494113 #16277] INFO -- : [Analyze OAS file (paths)] start
I, [2019-06-29T00:55:38.503677 #16277] INFO -- : Write schema file: oas_docs/src/paths/rails_admin/main.yml
I, [2019-06-29T00:55:38.504894 #16277] INFO -- : Write schema file: oas_docs/src/paths/rails_admin/engine.yml
I, [2019-06-29T00:55:38.509686 #16277] INFO -- : Write schema file: oas_docs/src/paths/api/v1/account_user_role.yml
I, [2019-06-29T00:55:38.522787 #16277] INFO -- : Write schema file: oas_docs/src/paths/api/v1/account.yml
I, [2019-06-29T00:55:38.532995 #16277] INFO -- : Write schema file: oas_docs/src/paths/api/v1/user.yml
I, [2019-06-29T00:55:38.537879 #16277] INFO -- : Write schema file: oas_docs/src/paths/api/v1/post.yml
I, [2019-06-29T00:55:38.542680 #16277] INFO -- : Write schema file: oas_docs/src/paths/api/v1/task.yml
I, [2019-06-29T00:55:38.548333 #16277] INFO -- : Write schema file: oas_docs/src/paths/api/v2/custom_post.yml
I, [2019-06-29T00:55:38.552802 #16277] INFO -- : Write schema file: oas_docs/src/paths/api/v2/post.yml
I, [2019-06-29T00:55:38.560056 #16277] INFO -- : Write schema file: oas_docs/src/paths/task.yml
I, [2019-06-29T00:55:38.566850 #16277] INFO -- : Write schema file: oas_docs/src/paths/user.yml
I, [2019-06-29T00:55:38.566886 #16277] INFO -- : [Analyze OAS file (paths)] end
I, [2019-06-29T00:55:38.567852 #16277] INFO -- : [Analyze OAS file (tags)] start
I, [2019-06-29T00:55:38.569655 #16277] INFO -- : Write schema file: oas_docs/src/tags.yml
I, [2019-06-29T00:55:38.569691 #16277] INFO -- : [Analyze OAS file (tags)] end
I, [2019-06-29T00:55:38.569708 #16277] INFO -- : [Analyze OAS file (components)] start
I, [2019-06-29T00:55:38.569724 #16277] INFO -- : [Analyze OAS file (components/schemas)] start
I, [2019-06-29T00:55:38.570894 #16277] INFO -- : Write schema file: oas_docs/src/components/schemas/account.yml
I, [2019-06-29T00:55:38.571540 #16277] INFO -- : Write schema file: oas_docs/src/components/schemas/account_user_role.yml
I, [2019-06-29T00:55:38.572217 #16277] INFO -- : Write schema file: oas_docs/src/components/schemas/custom_post.yml
I, [2019-06-29T00:55:38.573028 #16277] INFO -- : Write schema file: oas_docs/src/components/schemas/engine.yml
I, [2019-06-29T00:55:38.573710 #16277] INFO -- : Write schema file: oas_docs/src/components/schemas/main.yml
I, [2019-06-29T00:55:38.574328 #16277] INFO -- : Write schema file: oas_docs/src/components/schemas/post.yml
I, [2019-06-29T00:55:38.575088 #16277] INFO -- : Write schema file: oas_docs/src/components/schemas/task.yml
I, [2019-06-29T00:55:38.575687 #16277] INFO -- : Write schema file: oas_docs/src/components/schemas/user.yml
I, [2019-06-29T00:55:38.576485 #16277] INFO -- : Write schema file: oas_docs/src/components/schemas/user/new/200/get.yml
I, [2019-06-29T00:55:38.576518 #16277] INFO -- : [Analyze OAS file (components/schemas)] end
I, [2019-06-29T00:55:38.576535 #16277] INFO -- : [Analyze OAS file (components/requestBodies)] start
I, [2019-06-29T00:55:38.576852 #16277] INFO -- : [Analyze OAS file (components/requestBodies)] end
I, [2019-06-29T00:55:38.576867 #16277] INFO -- : [Analyze OAS file (components)] end
I, [2019-06-29T00:55:38.580873 #16277] INFO -- : [Analyze OAS file] end
I, [2019-06-29T00:55:38.587586 #16277] INFO -- : [R2-OAS] end