r2-oas 0.1.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/.rubocop.yml +6 -3
  4. data/.rubocop_todo.yml +68 -1
  5. data/.travis.yml +6 -2
  6. data/Appraisals +13 -0
  7. data/CHANGELOG.md +58 -1
  8. data/GEMSPEC.md +20 -0
  9. data/README.ja.md +65 -396
  10. data/README.md +62 -392
  11. data/devscript/all_support_ruby.sh +43 -0
  12. data/devscript/bundle_for_all_support_ruby.sh +31 -0
  13. data/devscript/rspec_for_all_support_ruby.sh +27 -0
  14. data/docs/.nojekyll +0 -0
  15. data/docs/README.md +173 -0
  16. data/docs/_sidebar.md +25 -0
  17. data/docs/attention/if_clash.md +17 -0
  18. data/docs/index.html +29 -0
  19. data/docs/{versions/v3.md → schema/3.0.0.md} +1 -1
  20. data/docs/setting/COC.md +14 -0
  21. data/docs/setting/CORS.md +22 -0
  22. data/docs/setting/configure.md +176 -0
  23. data/docs/trableshouting/runtime_error.md +44 -0
  24. data/docs/{HOW_TO_ANALYZE_DOCS.md → usage/analyze_docs.md} +52 -52
  25. data/docs/usage/clean_docs.md +19 -0
  26. data/docs/{HOW_TO_DEPLOY_SWAGGER_DOC.md → usage/deploy_docs.md} +29 -29
  27. data/docs/usage/display_paths_list.md +35 -0
  28. data/docs/{HOW_TO_DISPLAY_PATHS_STATS.md → usage/display_paths_stats.md} +15 -14
  29. data/docs/{HOW_TO_START_SWAGGER_EDITOR.md → usage/edit_docs.md} +88 -88
  30. data/docs/usage/generate_docs.md +412 -0
  31. data/docs/{HOW_TO_MONITOR_SWAGGER_DOC.md → usage/monitor_docs.md} +71 -71
  32. data/docs/usage/use_hook_methods.md +236 -0
  33. data/docs/{HOW_TO_USE_HOOK_WHEN_GENERATE_DOC.md → usage/use_hook_to_generate_docs.md} +48 -57
  34. data/docs/{HOW_TO_USE_SCHEMA_NAMESPACE.md → usage/use_schema_namespace.md} +46 -41
  35. data/docs/{HOW_TO_USE_TAG_NAMESPACE.md → usage/use_tag_namespace.md} +46 -42
  36. data/docs/{HOW_TO_START_SWAGGER_UI.md → usage/view_docs.md} +132 -132
  37. data/gemfiles/ruby_2.3.3.gemfile +11 -0
  38. data/gemfiles/ruby_2.4.2.gemfile +11 -0
  39. data/gemfiles/ruby_2.5.8.gemfile +11 -0
  40. data/gemfiles/ruby_2.6.6.gemfile +11 -0
  41. data/gemfiles/ruby_2.7.1.gemfile +11 -0
  42. data/lib/r2-oas.rb +3 -4
  43. data/lib/r2-oas/app_configuration.rb +19 -16
  44. data/lib/r2-oas/deploy/client.rb +14 -2
  45. data/lib/r2-oas/errors.rb +1 -0
  46. data/lib/r2-oas/lib/core_ext/hash/deep_merge.rb +44 -0
  47. data/lib/r2-oas/lib/core_ext/object/blank.rb +135 -0
  48. data/lib/r2-oas/lib/three-way-merge/twm.rb +83 -0
  49. data/lib/r2-oas/schema/builder.rb +23 -0
  50. data/lib/r2-oas/schema/editor.rb +26 -7
  51. data/lib/r2-oas/schema/generator.rb +1 -1
  52. data/lib/r2-oas/schema/manager/file_manager.rb +26 -0
  53. data/lib/r2-oas/schema/ui.rb +0 -1
  54. data/lib/r2-oas/schema/v3/analyzer/base_analyzer.rb +1 -6
  55. data/lib/r2-oas/schema/v3/analyzer/components/object_analyzer.rb +1 -1
  56. data/lib/r2-oas/schema/v3/analyzer/path_analyzer.rb +1 -1
  57. data/lib/r2-oas/schema/v3/analyzer/tag_analyzer.rb +1 -1
  58. data/lib/r2-oas/schema/v3/builder.rb +28 -0
  59. data/lib/r2-oas/schema/v3/builder/base_builder.rb +60 -0
  60. data/lib/r2-oas/schema/v3/builder/doc_builder.rb +43 -0
  61. data/lib/r2-oas/schema/v3/cleaner/base_cleaner.rb +1 -1
  62. data/lib/r2-oas/schema/v3/generator.rb +1 -5
  63. data/lib/r2-oas/schema/v3/generator/base_generator.rb +30 -1
  64. data/lib/r2-oas/schema/v3/generator/components/object_generator.rb +6 -25
  65. data/lib/r2-oas/schema/v3/generator/components/request_body_generator.rb +6 -6
  66. data/lib/r2-oas/schema/v3/generator/doc_generator.rb +84 -18
  67. data/lib/r2-oas/schema/v3/generator/path_generator.rb +7 -19
  68. data/lib/r2-oas/schema/v3/generator/schema_generator.rb +6 -26
  69. data/lib/r2-oas/schema/v3/manager/file/base_file_manager.rb +10 -4
  70. data/lib/r2-oas/schema/v3/manager/pathname_manager.rb +6 -1
  71. data/lib/r2-oas/schema/v3/object/path_item_object.rb +17 -9
  72. data/lib/r2-oas/store.rb +118 -0
  73. data/lib/r2-oas/task_logging.rb +6 -0
  74. data/lib/r2-oas/tasks/main.rake +66 -73
  75. data/lib/r2-oas/tasks/tool.rake +25 -28
  76. data/lib/r2-oas/tool/paths/ls.rb +1 -1
  77. data/lib/r2-oas/version.rb +1 -1
  78. data/r2-oas.gemspec +20 -25
  79. metadata +122 -52
  80. data/Gemfile.lock +0 -207
  81. data/docs/HOW_TO_CLEAN_DOCS.md +0 -19
  82. data/docs/HOW_TO_DISPLAY_PATHS_LIST.md +0 -28
  83. data/docs/HOW_TO_GENERATE_DOCS.md +0 -256
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 464bbc729526628547f9d689984b3925eeab1c6b7d2e58ee7a9712f222643f60
4
- data.tar.gz: 808faa249dc984ccf43928188cc139bce945fe7b7e3a296ee336f755cb063315
3
+ metadata.gz: 202a93f6e116bb378c723a0810746749dea8059e91d2c199727739850ca528e7
4
+ data.tar.gz: 8061d7a71e56c7656065b20ac85f39755df665dd0d22031e01374e82a773114c
5
5
  SHA512:
6
- metadata.gz: 82f601ac4610d3744422b11f58b9eab7dca668bde7e3da02ef013816d2b2edab6294404d1820579465e0f3a545904f48bb53777f9099d6f462cfd4717b69ab13
7
- data.tar.gz: e12135a40bf94764064b0dc6b42dbe1880e7fd8e536c140fda3241d79fa82671d4f7aef899df287516b3ce2ba0fc7ad2d035196d6ebfc7e3f2a25efad2033930
6
+ metadata.gz: 0700ad89a7147febd6b7fabb6c2343403a0f0fc4fa2e244996e3a2fa24a9e951e6e5899335f4fb4e26858796c87b04e4af4984992ce06d3a0d6864fdd6f2659f
7
+ data.tar.gz: 2bab390d140d5eeef3b12b7563ffe20e3b2179e129f38bf4c3c4483777d80f4b91e5f73f8d74ad7a8f7c9db81ff258915a6a57cda90b4b2edcf199eb26b2ec49
data/.gitignore CHANGED
@@ -10,3 +10,7 @@
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
12
  /example*
13
+ Gemfile.lock
14
+ **/vendor/bundle
15
+ gemfiles/*.lock
16
+ gemfiles/.bundle/*
@@ -1,7 +1,10 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.3
4
+ TargetRubyVersion: 2.7
5
5
  Exclude:
6
- - 'example*/**/*'
7
- - 'vendor/**/*'
6
+ - "example*/**/*"
7
+ - "vendor/**/*"
8
+ - "r2-oas.gemspec"
9
+ - "gemfiles/**/*"
10
+ - "Appraisals"
@@ -10,7 +10,7 @@
10
10
  # Cop supports --auto-correct.
11
11
  # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
12
12
  # URISchemes: http, https
13
- Metrics/LineLength:
13
+ Layout/LineLength:
14
14
  Max: 2088
15
15
 
16
16
  Metrics/AbcSize:
@@ -26,6 +26,7 @@ Metrics/AbcSize:
26
26
  - "lib/r2-oas/routing/components/request_component.rb"
27
27
  - "spec/r2-oas/schema/v3/object/components/schema_object_spec.rb"
28
28
  - "spec/support/helpers/config_helper.rb"
29
+ - "lib/r2-oas/schema/v3/generator/doc_generator.rb"
29
30
 
30
31
  Style/Documentation:
31
32
  Enabled: false
@@ -55,6 +56,7 @@ Metrics/BlockLength:
55
56
  - "spec/r2-oas/tasks/tool_spec.rb"
56
57
  - "spec/r2-oas/configuration_spec.rb"
57
58
  - "spec/r2-oas/schema/v3/generator_spec.rb"
59
+ - "spec/r2-oas/schema/v3/builder_spec.rb"
58
60
  - "spec/r2-oas/schema/v3/analyzer_spec.rb"
59
61
  - "spec/support/helpers/config_helper.rb"
60
62
  - "spec/r2-oas/schema/v3/object/components_object_spec.rb"
@@ -62,6 +64,7 @@ Metrics/BlockLength:
62
64
  - "spec/r2-oas/schema/v3/manager/diff/base_array_diff_manager_spec.rb"
63
65
  - "spec/r2-oas/schema/v3/manager/file/include_ref_base_file_manager_spec.rb"
64
66
  - "spec/r2-oas/schema/v3/generator/base_generator_spec.rb"
67
+ - "spec/r2-oas/schema/v3/builder/base_builder_spec.rb"
65
68
  - "spec/r2-oas/schema/v3/object/openapi_object_spec.rb"
66
69
  - "spec/r2-oas/schema/v3/object/info_object_spec.rb"
67
70
 
@@ -112,17 +115,20 @@ Metrics/MethodLength:
112
115
  - "lib/r2-oas/schema/v3/generator/schema_generator.rb"
113
116
  - "lib/r2-oas/schema/v3/generator/components/schema_generator.rb"
114
117
  - "lib/r2-oas/schema/v3/generator/doc_generator.rb"
118
+ - "lib/r2-oas/schema/v3/builder/doc_builder.rb"
115
119
  - "lib/r2-oas/schema/v3/object/components/request_body_object.rb"
116
120
  - "lib/r2-oas/schema/v3/squeezer/path_squeezer.rb"
117
121
  - "lib/r2-oas/schema/v3/generator/components/object_generator.rb"
118
122
  - "lib/r2-oas/routing/components/request_component.rb"
119
123
  - "spec/support/helpers/config_helper.rb"
120
124
  - "lib/r2-oas/schema/v3/analyzer/components/object_analyzer.rb"
125
+ - "lib/r2-oas/store.rb"
121
126
 
122
127
  Metrics/CyclomaticComplexity:
123
128
  Exclude:
124
129
  - "lib/r2-oas/logger/stdout_logger.rb"
125
130
  - "lib/r2-oas/schema/v3/manager/pathname_manager.rb"
131
+ - "lib/r2-oas/schema/v3/generator/doc_generator.rb"
126
132
 
127
133
  Naming/ConstantName:
128
134
  Exclude:
@@ -180,6 +186,7 @@ Style/AccessModifierDeclarations:
180
186
  Style/NumericPredicate:
181
187
  Exclude:
182
188
  - "lib/r2-oas/schema/v3/generator/base_generator.rb"
189
+ - "lib/r2-oas/schema/v3/builder/base_builder.rb"
183
190
 
184
191
  Metrics/ClassLength:
185
192
  Exclude:
@@ -195,6 +202,7 @@ Layout/EndAlignment:
195
202
  Exclude:
196
203
  - "lib/r2-oas/shared/sortable.rb"
197
204
  - "lib/r2-oas/schema/v3/generator/doc_generator.rb"
205
+ - "lib/r2-oas/schema/v3/builder/doc_builder.rb"
198
206
 
199
207
  Security/YAMLLoad:
200
208
  Exclude:
@@ -222,3 +230,62 @@ Style/ClassAndModuleChildren:
222
230
  Lint/RequireParentheses:
223
231
  Exclude:
224
232
  - "spec/r2-oas/schema/v3/object/components/schema_object_spec.rb"
233
+
234
+ Style/IfUnlessModifier:
235
+ Exclude:
236
+ - "lib/r2-oas/schema/editor.rb"
237
+
238
+ Security/MarshalLoad:
239
+ Enabled: false
240
+
241
+ Metrics/PerceivedComplexity:
242
+ Exclude:
243
+ - "lib/r2-oas/schema/v3/generator/doc_generator.rb"
244
+
245
+ Lint/UselessAssignment:
246
+ Enabled: false
247
+
248
+ Style/NestedParenthesizedCalls:
249
+ Enabled: false
250
+
251
+ Layout/EmptyLinesAroundAttributeAccessor:
252
+ Enabled: false
253
+
254
+ Layout/SpaceAroundMethodCallOperator:
255
+ Enabled: false
256
+
257
+ Lint/DeprecatedOpenSSLConstant:
258
+ Enabled: false
259
+
260
+ Lint/RaiseException:
261
+ Enabled: false
262
+
263
+ Lint/StructNewOverride:
264
+ Enabled: false
265
+
266
+ Style/ExponentialNotation:
267
+ Enabled: false
268
+
269
+ Style/HashEachMethods:
270
+ Enabled: false
271
+ Style/HashTransformKeys:
272
+ Enabled: false
273
+
274
+ Style/HashTransformValues:
275
+ Enabled: false
276
+
277
+ Style/SlicingWithRange:
278
+ Enabled: false
279
+
280
+ Lint/NonDeterministicRequireOrder:
281
+ Exclude:
282
+ - "spec/spec_helper.rb"
283
+
284
+ Lint/MixedRegexpCaptureTypes:
285
+ Enabled: false
286
+
287
+ Style/RedundantRegexpCharacterClass:
288
+ Enabled: false
289
+
290
+ Style/RedundantRegexpEscape:
291
+ Enabled: false
@@ -7,8 +7,12 @@ cache: bundler
7
7
 
8
8
  rvm:
9
9
  - 2.3.3
10
+ - 2.4.2
11
+ - 2.5.7
12
+ - 2.6.5
13
+ - 2.7.1
10
14
 
11
- before_install: gem install bundler -v 1.17.3
15
+ before_install: gem install bundler
12
16
 
13
17
  gemfile:
14
18
  - Gemfile
@@ -18,5 +22,5 @@ install:
18
22
  - bundle install
19
23
 
20
24
  script:
21
- - bundle exec rubocop --fail-level=W
25
+ - ruby -e "if RUBY_VERSION >= '2.7'; system('bundle exec rubocop --fail-level=W'); end"
22
26
  - bundle exec rspec spec --exclude-pattern "spec/r2-oas/tasks/tool_spec.rb,spec/r2-oas/tool/paths/stats_spec.rb"
@@ -0,0 +1,13 @@
1
+ appraise 'ruby-2.3.3' do
2
+ end
3
+ appraise 'ruby-2.4.2' do
4
+ end
5
+ # stable
6
+ appraise 'ruby-2.5.8' do
7
+ end
8
+ # stable
9
+ appraise 'ruby-2.6.6' do
10
+ end
11
+ # stable
12
+ appraise 'ruby-2.7.1' do
13
+ end
@@ -1,3 +1,60 @@
1
+ # Change Log
2
+
3
+ ## v0.3.1
4
+
5
+ 2020-06-07
6
+
7
+ - [`Breaking`] Remove unnecessary runtime dependencies ([384ea1a](https://github.com/yukihirop/r2-oas/pull/132))
8
+
9
+ ## v0.3.0
10
+
11
+ 2020-05-30
12
+
13
+ - [`Feature/Breaking`] Support Ruby 2.7 🎉 ([931ec4b](https://github.com/yukihirop/r2-oas/pull/122))
14
+
15
+ - Remove `Gemfile.lock`
16
+
17
+ - [`Developer`] Create script to test all support ruby in development ([8d0df98](https://github.com/yukihirop/r2-oas/pull/124))
18
+ - [`Docs`] Add docs about Trableshouting ([f4a782f](https://github.com/yukihirop/r2-oas/pull/125))
19
+
20
+ ## v0.2.0
21
+
22
+ 2020-05-02
23
+
24
+ - [`Feature/Breaking`] Upgrade `routes:oas:docs` cmd ([37ccddf](https://github.com/yukihirop/r2-oas/pull/117))
25
+
26
+ - `.docs` is needed to continue using r2-oas. `If you are using previous version`,you need to run the following command to generate `.docs`.
27
+
28
+ ```bash
29
+ CACHE_DOCS=true bundle exec rake routes:oas:docs
30
+ ```
31
+
32
+ - [`Breaking`] Divide into `Generator` and `Builder` ([00fea7d](https://github.com/yukihirop/r2-oas/pull/116))
33
+ - `routes:oas:docs` cmd do not generate `oas_docs/oas_doc.yml`
34
+
35
+ ## v0.1.3
36
+
37
+ 2020-04-27
38
+
39
+ - [`FixBugs`] Fix clash when edit ([906d068](https://github.com/yukihirop/r2-oas/pull/109))
40
+ - [`Feature`] Change log display to relative path ([c735d22](https://github.com/yukihirop/r2-oas/pull/111))
41
+
42
+ ## v0.1.2
43
+
44
+ 2020-04-22
45
+
46
+ - No Change
47
+
48
+ ## v0.1.1
49
+
50
+ 2020-04-22
51
+
52
+ - [`Feature`] Create document by docsify([def4463](https://github.com/yukihirop/r2-oas/pull/99))
53
+ - [`Breaking`] Do not generate component schema when http_status equal 204 and 404 by default ([f7fcafd](https://github.com/yukihirop/r2-oas/pull/103))
54
+
55
+
1
56
  ## v0.1.0
2
57
 
3
- - first release [2019-10-22 / The day of the throne (called 即位礼正殿の儀の行われる日 in Japanease)]
58
+ 2019-10-22 / The day of the throne (called 即位礼正殿の儀の行われる日 in Japanease)
59
+
60
+ - first release
@@ -0,0 +1,20 @@
1
+ Configureless and no DSL. 👍 But you can also configure.
2
+ Manage with yaml file instead of Ruby code.
3
+ Loosely coupled to your Rails project. 👍
4
+ So if you want to use another tool, you can port it right away. 😢
5
+ Generate api docment(OpenAPI) side only from `Rails` routing.
6
+
7
+ Provide rake tasks to management API Docment (OpenAPI) 🎉
8
+
9
+
10
+ $ bundle exec rake routes:oas:docs
11
+ $ bundle exec rake routes:oas:ui
12
+ $ bundle exec rake routes:oas:editor
13
+ $ bundle exec rake routes:oas:monitor
14
+ $ bundle exec rake routes:oas:dist
15
+ $ bundle exec rake routes:oas:clean
16
+ $ bundle exec rake routes:oas:analyze
17
+ $ bundle exec rake routes:oas:deploy
18
+
19
+
20
+ Happy Coding ❗️
@@ -1,10 +1,11 @@
1
1
  # R2-OAS
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/r2-oas.svg)](https://badge.fury.io/rb/r2-oas)
3
4
  [![Build Status](https://travis-ci.org/yukihirop/r2-oas.svg?branch=master)](https://travis-ci.org/yukihirop/r2-oas)
4
5
  [![Coverage Status](https://coveralls.io/repos/github/yukihirop/r2-oas/badge.svg)](https://coveralls.io/github/yukihirop/r2-oas)
5
6
  [![Maintainability](https://api.codeclimate.com/v1/badges/f8c3846f350bb412fd63/maintainability)](https://codeclimate.com/github/yukihirop/r2-oas/maintainability)
6
7
 
7
- railsのルーティング情報からOpenAPI形式のドキュメントを生成し、閲覧・編集・管理するためのrakeタスクの提供をします。
8
+ Railsのルーティング情報からOpenAPI形式のドキュメントを生成し、閲覧・編集・管理するためのrakeタスクの提供をします。
8
9
 
9
10
  ```bash
10
11
  bundle exec rake routes:oas:docs # ドキュメント生成
@@ -52,90 +53,20 @@ bundle exec routes:oas:docs
52
53
  bundle exec routes:oas:editor
53
54
  ```
54
55
 
55
- ## 📖 Usage
56
+ #### Generate docs
56
57
 
57
- 全ての設定は `オプショナル` です。設定してもしなくても構いません。
58
+ ![oas_docs](https://user-images.githubusercontent.com/11146767/80856236-0b839a80-8c83-11ea-888f-d0e659e0c251.gif)
58
59
 
59
- 設定はrailsプロジェクトの `config/environments/development.rb` に書きます。
60
60
 
61
- デフォルトでは以下に設定されています。
61
+ #### Edit docs
62
62
 
63
- ```ruby
64
- # default setting
65
- R2OAS.configure do |config|
66
- config.version = :v3
67
- config.root_dir_path = "./oas_docs"
68
- config.schema_save_dir_name = "src"
69
- config.doc_save_file_name = "oas_doc.yml"
70
- config.force_update_schema = false
71
- config.use_tag_namespace = true
72
- config.use_schema_namespace = false
73
- config.interval_to_save_edited_tmp_schema = 15
74
- # :dot or :underbar
75
- config.namespace_type = :underbar
76
- config.deploy_dir_path = "./deploy_docs"
77
-
78
- config.server.data = [
79
- {
80
- url: "http://localhost:3000",
81
- description: "localhost"
82
- }
83
- ]
84
-
85
- config.swagger.configure do |swagger|
86
- swagger.ui.image = "swaggerapi/swagger-ui"
87
- swagger.ui.port = "8080"
88
- swagger.ui.exposed_port = "8080/tcp"
89
- swagger.ui.volume = "/app/swagger.json"
90
- swagger.editor.image = "swaggerapi/swagger-editor"
91
- swagger.editor.port = "81"
92
- swagger.editor.exposed_port = "8080/tcp"
93
- end
63
+ ![oas_editor](https://user-images.githubusercontent.com/11146767/80856240-15a59900-8c83-11ea-9dbd-4382528944f2.gif)
94
64
 
95
- config.use_object_classes = {
96
- info_object: R2OAS::Schema::V3::InfoObject,
97
- paths_object: R2OAS::Schema::V3::PathsObject,
98
- path_item_object: R2OAS::Schema::V3::PathItemObject,
99
- external_document_object: R2OAS::Schema::V3::ExternalDocumentObject,
100
- components_object: R2OAS::Schema::V3::ComponentsObject,
101
- components_schema_object: R2OAS::Schema::V3::Components::SchemaObject,
102
- components_request_body_object: R2OAS::Schema::V3::Components::RequestBodyObject
103
- }
104
-
105
- config.http_statuses_when_http_method = {
106
- get: {
107
- default: %w(200 422),
108
- path_parameter: %w(200 404 422)
109
- },
110
- post: {
111
- default: %w(201 422),
112
- path_parameter: %w(201 404 422)
113
- },
114
- patch: {
115
- default: %w(204 422),
116
- path_parameter: %w(204 404 422)
117
- },
118
- put: {
119
- default: %w(204 422),
120
- path_parameter: %w(204 404 422)
121
- },
122
- delete: {
123
- default: %w(200 422),
124
- path_parameter: %w(200 404 422)
125
- }
126
- }
127
-
128
- config.http_methods_when_generate_request_body = %w[post patch put]
129
-
130
- config.tool.paths_stats.configure do |paths_stats|
131
- paths_stats.month_to_turn_to_warning_color = 3
132
- paths_stats.warning_color = :red
133
- paths_stats.table_title_color = :yellow
134
- paths_stats.heading_color = :yellow
135
- paths_stats.highlight_color = :magenta
136
- end
137
- end
138
- ```
65
+ ## 📚 Documents
66
+
67
+ 公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas
68
+
69
+ ## 📖 Usage
139
70
 
140
71
  railsプロジェクトのルートディレクトリで以下のコマンドが実行可能です。
141
72
 
@@ -170,21 +101,6 @@ $ bundle exec rake routes:oas:paths_ls
170
101
  $ bundle exec rake routes:oas:paths_stats
171
102
  ```
172
103
 
173
- ## 📚 More Usage
174
-
175
- - [How to generate docs](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_GENERATE_DOCS.md)
176
- - [How to start swagger editor](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_START_SWAGGER_EDITOR.md)
177
- - [How to start swagger ui](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_START_SWAGGER_UI.md)
178
- - [How to monitor swagger document](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_MONITOR_SWAGGER_DOC.md)
179
- - [How to analyze docs](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_ANALYZE_DOCS.md)
180
- - [How to clean docs](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_CLEAN_DOCS.md)
181
- - [How to deploy swagger doc](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_DEPLOY_SWAGGER_DOC.md)
182
- - [How to use tag namespace](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_USE_TAG_NAMESPACE.md)
183
- - [How to use schema namespace](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_USE_SCHEMA_NAMESPACE.md)
184
- - [How to use hook when generate doc](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_USE_HOOK_WHEN_GENERATE_DOC.md)
185
- - [How to display paths list](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_DISPLAY_PATHS_LIST.md)
186
- - [How to display paths stats](https://github.com/yukihirop/r2-oas/blob/master/docs/HOW_TO_DISPLAY_PATHS_STATS.md)
187
-
188
104
 
189
105
  ## ⚾️ sample
190
106
 
@@ -210,11 +126,11 @@ $ bundle exec rake routes:oas:paths_stats
210
126
 
211
127
  ## ❤️ Support OpenAPI Schema
212
128
 
213
- |version|document|
214
- |-------|--------|
215
- |v3|[versions/v3.md](https://github.com/yukihirop/r2-oas/blob/master/docs/versions/v3.md)|
129
+ OpenAPIの3.0.0をサポートしてます。
130
+
131
+ 公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas/#/schema/3.0.0
216
132
 
217
- ## ❗️ Convention over Configuration (CoC)
133
+ ## ❗️Convention over Configuration (CoC)
218
134
 
219
135
  ツールを便利にするために、設定よりも制約があります。
220
136
 
@@ -231,324 +147,77 @@ $ bundle exec rake routes:oas:paths_stats
231
147
 
232
148
  ## ⚙ Configure
233
149
 
234
- 設定可能な設定に関して説明します。
235
-
236
- #### basic
237
-
238
- |option|description|default|
239
- |------|-----------|---|
240
- |version|OpenAPIのバージョン| `:v3` |
241
- |root_dir_path|ドキュメントの保存パス| `"./oas_docs"` |
242
- |schema_save_dir_name|分解したスキーマの保存ディレクトリ名|`"src"`|
243
- |doc_save_file_name|生成したドキュメントのファイル名|`"oas_doc.yml"`|
244
- |force_update_schema|既生のドキュメントをルーティング情報から生成されたデータで更新するか否か|`false`|
245
- |use_tag_namespace|タグ名にネームスペースを使うか否か|`true`|
246
- |use_schema_namespace|components/{schemas,requestBodies}名に擬似ネームスペースを利用するか否か|`true`|
247
- |interval_to_save_edited_tmp_schema|SwaggerEditor上で編集されたドキュメントをメモリに保存する間隔(sec)|`15`|
248
- |http_statuses_when_http_method|HTTPメソッド毎にどのHTTPステータスのレスポンスを用意するかを決める設定|omission...|
249
- |http_methods_when_generate_request_body|リクエストボディーを生成する時のHTTPメソッド|`[post put patch]`|
250
- |namespace_type|components/{schemas,requestBodies,...}名で使用する擬似ネームスペースの種類(:dot or :underbar)| `:underbar` |
251
- |deploy_dir_path|deployのディレクトリパス|`"./deploy_docs"`|
252
-
253
- #### server
254
-
255
- |option|children option|description|default|
256
- |------|---------------|-----------|-------|
257
- |server|data|サーバー情報(url, description) |[{ url: `http://localhost:3000`, description: `localhost` }] |
258
-
259
- #### swagger
260
-
261
- |option|children option|grandchild option|description|default|
262
- |------|---------------|-----------------|-----------|-------|
263
- |swagger|ui|image|SwaggerUIのDockerイメージ|`"swaggerapi/swagger-ui"`|
264
- |swagger|ui|port|SwaggerUIのポート|`"8080"`|
265
- |swagger|ui|exposed_port|SwaggerUIの公開ポート|`"8080/tcp"`|
266
- |swagger|ui|volume|SwaggerUIのVolume|`"/app/swagger.json"`|
267
- |swagger|editor|image|SwaggerEditorのDockerイメージ|`"swaggerapi/swagger-editor"`|
268
- |swagger|editor|port|SwaggerEditorのポート|`"8080"`|
269
- |swagger|editor|exposed_port|SwaggerEditorの公開ポート|`"8080/tcp"`|
270
-
271
- #### hook
272
-
273
- |option|description|default|
274
- |------|-----------|-------|
275
- |use_object_classes|ドキュメント生成時に使用するオブジェクトクラスの設定|{ info_object: `R2OAS::Schema::V3::InfoObject`,<br>paths_object: `R2OAS::Schema::V3::PathsObject`,<br>path_item_object: `R2OAS::Schema::V3::PathItemObject`, external_document_object: `R2OAS::Schema::V3::ExternalDocumentObject`,<br> components_object: `R2OAS::Schema::V3::ComponentsObject`,<br> components_schema_object: `R2OAS::Schema::V3::Components::SchemaObject`, <br> components_request_body_object:`R2OAS::Schema::V3::Components::RequestBodyObject` }|
276
-
277
- #### tool
278
-
279
- |option|children option|grandchild option|description|default|
280
- |------|---------------|-----------------|-----------|-------|
281
- |tool|paths_stats|month_to_turn_to_warning_color|警告色を表示するまでの期間(ヶ月)|`3`|
282
- |tool|paths_stats|warning_color|警告色|`:red`|
283
- |tool|paths_stats|table_title_color|テーブルのタイトルの色|`:yellow`|
284
- |tool|paths_stats|heading_color|ヘッダーの色|`:yellow`|
285
- |tool|paths_stats|highlight_color|強調色|`:magenta`|
286
-
287
- Please refer to [here](https://github.com/janlelis/paint) for the color.
288
-
289
- ## Environment variables
290
-
291
- 環境変数は以下を用意しております。
292
-
293
- |variable|description|default|
294
- |--------|-----------|-------|
295
- |PATHS_FILE|pathsファイルのパス|`""`|
296
- |OAS_FILE|analyzeするドキュメントへのパス|`""`|
297
-
298
-
299
- ## .paths
300
-
301
- `.paths` ファイルを書くことで必要な分だけドキュメントを閲覧・編集・配布する事が可能になります。
302
-
303
- `#` から始まる行はコメントとして扱われ無視されます。重複も無視されます。
304
-
305
- `paths` ディレクトリ以下のパスを書きます。
150
+ 全ての設定は `オプショナル` です。設定してもしなくても構いません。
306
151
 
307
- `oas_docs/.paths`
308
- ```
309
- #account_user_role.yml # ignore
310
- account.yml
311
- account.yml # ignore
312
- account.yml # ignore
313
- ```
152
+ 公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas/#/setting/configure
314
153
 
315
154
  ## 💊 Life Cycle Methods (Hook Metohds)
316
155
 
317
156
  ドキュメント生成時に、フックを可能にするメソッドを用意しております。
318
157
 
319
- - `before_create`
320
- - `after_create`
321
-
322
- フック可能なオブジェクトは以下の通りです。
323
-
324
- - `R2OAS::Schema::V3::InfoObject`
325
- - `R2OAS::Schema::V3::PathsObject`
326
- - `R2OAS::Schema::V3::PathItemObject`
327
- - `R2OAS::Schema::V3::ExternalDocumentObject`
328
- - `R2OAS::Schema::V3::ComponentsObject`
329
- - `R2OAS::Schema::V3::Components::SchemaObject`
330
- - `R2OAS::Schema::V3::Components::RequestBodyObject`
331
-
332
- これらのクラスを継承して、フックの設定を書きます。以下に例を用意しました。
333
-
334
- #### case: InfoObject
335
-
336
- ```ruby
337
- class CustomInfoObject < R2OAS::Schema::V3::InfoObject
338
- before_create do |doc|
339
- # [重要] docへの破壊的な変更をしてください。
340
- # [重要] railsが提供するメソッドを使用する事ができます。
341
- doc.merge!({
342
- # Something ....
343
- })
344
- end
345
-
346
- after_create do |doc, path|
347
- # [重要] docへの破壊的な変更をしてください。
348
- # [重要] railsが提供するメソッドを使用する事ができます。
349
- doc.merge!({
350
- # Something ....
351
- })
352
- end
353
- end
354
- ```
355
-
356
- #### case: PathsObject
357
-
358
- ```ruby
359
- class CustomPathsObject < R2OAS::Schema::V3::PathsObject
360
- before_create do |doc|
361
- # [重要] docへの破壊的な変更をしてください。
362
- # [重要] railsが提供するメソッドを使用する事ができます。
363
- doc.merge!({
364
- # Something ....
365
- })
366
- end
367
-
368
- after_create do |doc|
369
- # [重要] docへの破壊的な変更をしてください。
370
- # [重要] railsが提供するメソッドを使用する事ができます。
371
- doc.merge!({
372
- # Something ....
373
- })
374
- end
375
- end
376
- ```
377
-
378
- #### case: PathItemObject
379
-
380
- ```ruby
381
- class CustomPathItemObject < R2OAS::Schema::V3::PathItemObject
382
- before_create do |doc, path|
383
- # [重要] docへの破壊的な変更をしてください。
384
- # [重要] railsが提供するメソッドを使用する事ができます。
385
- doc.merge!({
386
- # Something ....
387
- })
388
- end
389
-
390
- after_create do |doc, schema_name|
391
- # [重要] docへの破壊的な変更をしてください。
392
- # [重要] railsが提供するメソッドを使用する事ができます。
393
- doc.merge!({
394
- # Something ....
395
- })
396
- end
397
- end
398
- ```
399
-
400
- #### case: ExternalDocumentObject
401
-
402
- ```ruby
403
- class CustomExternalDocumentObject < R2OAS::Schema::V3::ExternalDocumentObject
404
- before_create do |doc|
405
- # [重要] docへの破壊的な変更をしてください。
406
- # [重要] railsが提供するメソッドを使用する事ができます。
407
- doc.merge!({
408
- # Something ....
409
- })
410
- end
411
-
412
- after_create do |doc|
413
- # [重要] docへの破壊的な変更をしてください。
414
- # [重要] railsが提供するメソッドを使用する事ができます。
415
- doc.merge!({
416
- # Something ....
417
- })
418
- end
419
- end
420
- ```
421
-
422
- #### case: ComponentsObject
423
-
424
- ```ruby
425
- class CustomComponentsObject < R2OAS::Schema::V3::ComponentsObject
426
- before_create do |doc|
427
- # [重要] docへの破壊的な変更をしてください。
428
- # [重要] railsが提供するメソッドを使用する事ができます。
429
- doc.merge!({
430
- # Something ....
431
- })
432
- end
433
-
434
- after_create do |doc|
435
- # [重要] docへの破壊的な変更をしてください。
436
- # [重要] railsが提供するメソッドを使用する事ができます。
437
- doc.merge!({
438
- # Something ....
439
- })
440
- end
441
- end
442
- ```
443
-
444
- #### case: Components::SchemaObject
445
-
446
- ```ruby
447
- class CustomComponentsSchemaObject < R2OAS::Schema::V3::Components::SchemaObject
448
- before_create do |doc, schema_name|
449
- # [重要] docへの破壊的な変更をしてください。
450
- # [重要] railsが提供するメソッドを使用する事ができます。
451
- doc.merge!({
452
- # Something ....
453
- })
454
- end
455
-
456
- after_create do |doc, schema_name|
457
- # [重要] docへの破壊的な変更をしてください。
458
- # [重要] railsが提供するメソッドを使用する事ができます。
459
- doc.merge!({
460
- # Something ....
461
- })
462
- end
463
- end
464
- ```
158
+ 公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas/#/usage/use_hook_methods
465
159
 
466
- ドキュメント生成時にcomponents/schemas名を上書きしたい場合は以下の様にします。
467
160
 
468
- ```ruby
469
- class CustomComponentsSchemaObject < R2OAS::Schema::V3::Components::SchemaObject
470
- def components_schema_name(doc, path_component, tag_name, verb, http_status, schema_name)
471
- # [重要] 返値は文字列であるべきです。
472
- # 初期値はschema_name
473
- schema_name
474
- end
475
- end
476
- ```
161
+ ## Bundle and Rspec with multiple ruby ​​versions
477
162
 
478
- `path_component` は `R2OAS::Routing::PathComponent` のインスタンスです。
163
+ #### Bundle
479
164
 
480
- ```ruby
481
- module R2OAS
482
- module Routing
483
- class PathComponent < BaseComponent
484
- def initialize(path)
485
- def to_s
486
- def symbol_to_brace
487
- def path_parameters_data
488
- def path_excluded_path_parameters
489
- def exist_path_parameters?
490
- def path_parameters
491
- private
492
- def without_format
165
+ ```bash
166
+ /bin/bash devscript/all_support_ruby.sh bundle
167
+ .
168
+ .
169
+ .
170
+ ===== Bundle install for All Support Ruby Result =====
171
+ ruby-2.3.3: 0
172
+ ruby-2.4.2: 0
173
+ ruby-2.5.8: 0
174
+ ruby-2.6.6: 0
175
+ ruby-2.7.1: 0
176
+ ======================================================
493
177
  ```
494
178
 
495
- #### case: Components::RequestBodyObject
496
-
497
- ```ruby
498
- class CustomComponentsRequestBodyObject < R2OAS::Schema::V3::Components::RequestBodyObject
499
- before_create do |doc, schema_name|
500
- # [重要] docへの破壊的な変更をしてください。
501
- # [重要] railsが提供するメソッドを使用する事ができます。
502
- doc.merge!({
503
- # Something ....
504
- })
505
- end
179
+ rubyのバージョンを `2.6.6` と `2.7.1` に指定する場合
506
180
 
507
- after_create do |doc, schema_name|
508
- # [重要] docへの破壊的な変更をしてください。
509
- # [重要] railsが提供するメソッドを使用する事ができます。
510
- doc.merge!({
511
- # Something ....
512
- })
513
- end
514
- end
181
+ ```bash
182
+ /bin/bash devscript/all_support_ruby.sh bundle 2.6.6 2.7.1
183
+ .
184
+ .
185
+ .
186
+ ===== Bundle install for All Support Ruby Result =====
187
+ ruby-2.6.6: 0
188
+ ruby-2.7.1: 0
189
+ ======================================================
515
190
  ```
516
191
 
517
- ドキュメント生成時にcomponents/requestBodies名を上書きしたい場合は以下の様にします。
192
+ #### Rspec
518
193
 
519
- ```ruby
520
- class CustomComponentsRequestBodyObject < R2OAS::Schema::V3::Components::RequestBodyObject
521
- def components_request_body_name(doc, path_component, tag_name, verb, schema_name)
522
- # [重要] 返値は文字列であるべきです。
523
- # 初期値はschema_name
524
- schema_name
525
- end
526
-
527
- def components_schema_name(doc, path_component, tag_name, verb, schema_name)
528
- # [重要] 返値は文字列であるべきです。
529
- # 初期値はschema_name
530
- schema_name
531
- end
532
- end
194
+ ```bash
195
+ /bin/bash devscript/all_support_ruby.sh rspec
196
+ .
197
+ .
198
+ .
199
+ ===== Rspec for All Support Ruby Result =====
200
+ ruby-2.3.3: 0
201
+ ruby-2.4.2: 0
202
+ ruby-2.5.8: 0
203
+ ruby-2.6.6: 0
204
+ ruby-2.7.1: 0
205
+ =============================================
533
206
  ```
534
207
 
535
- そして最後に設定を書きます。
208
+ rubyのバージョンを `2.6.6` と `2.7.1` に指定する場合
536
209
 
537
- ```ruby
538
- # もし、InfoObjectとPathItemObjectをカスタムのものにしたい場合は以下の様にします。
539
- R2OAS.configure do |config|
540
- #
541
- # omission ...
542
- #
543
- config.use_object_classes.merge!({
544
- info_object: CustomInfoObject,
545
- path_item_object: CustomPathItemObject
546
- })
547
- end
210
+ ```bash
211
+ /bin/bash devscript/all_support_ruby.sh rspec 2.6.6 2.7.1
212
+ .
213
+ .
214
+ .
215
+ ===== Rspec for All Support Ruby Result =====
216
+ ruby-2.6.6: 0
217
+ ruby-2.7.1: 0
218
+ =============================================
548
219
  ```
549
220
 
550
- これだけです。
551
-
552
221
  ## 🔩 CORS
553
222
 
554
223
  [rack-cors](https://github.com/cyu/rack-cors)を使用する事でCORSを可能にします。