r2-oas 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -1
- data/Gemfile.lock +85 -70
- data/README.ja.md +11 -413
- data/README.md +9 -409
- data/docs/.nojekyll +0 -0
- data/docs/README.md +326 -0
- data/docs/_sidebar.md +22 -0
- data/docs/index.html +28 -0
- data/docs/{versions/v3.md → schema/3.0.0.md} +1 -1
- data/docs/setting/COC.md +14 -0
- data/docs/setting/CORS.md +22 -0
- data/docs/setting/configure.md +163 -0
- data/docs/{HOW_TO_ANALYZE_DOCS.md → usage/analyze_docs.md} +8 -8
- data/docs/usage/clean_docs.md +19 -0
- data/docs/{HOW_TO_DEPLOY_SWAGGER_DOC.md → usage/deploy_docs.md} +8 -8
- data/docs/{HOW_TO_DISPLAY_PATHS_LIST.md → usage/display_paths_list.md} +15 -8
- data/docs/{HOW_TO_DISPLAY_PATHS_STATS.md → usage/display_paths_stats.md} +15 -14
- data/docs/{HOW_TO_START_SWAGGER_EDITOR.md → usage/edit_docs.md} +10 -10
- data/docs/{HOW_TO_GENERATE_DOCS.md → usage/generate_docs.md} +9 -9
- data/docs/{HOW_TO_MONITOR_SWAGGER_DOC.md → usage/monitor_docs.md} +9 -9
- data/docs/usage/use_hook_methods.md +236 -0
- data/docs/{HOW_TO_USE_HOOK_WHEN_GENERATE_DOC.md → usage/use_hook_to_generate_docs.md} +6 -15
- data/docs/{HOW_TO_USE_SCHEMA_NAMESPACE.md → usage/use_schema_namespace.md} +16 -9
- data/docs/{HOW_TO_USE_TAG_NAMESPACE.md → usage/use_tag_namespace.md} +22 -16
- data/docs/{HOW_TO_START_SWAGGER_UI.md → usage/view_docs.md} +10 -10
- data/lib/r2-oas/app_configuration.rb +19 -16
- data/lib/r2-oas/deploy/client.rb +1 -1
- data/lib/r2-oas/schema/v3/object/path_item_object.rb +17 -9
- data/lib/r2-oas/version.rb +1 -1
- data/r2-oas.gemspec +5 -19
- metadata +42 -46
- data/docs/HOW_TO_CLEAN_DOCS.md +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9eec703f732ad44e2cd37ad10c80bc2a2335a139d2d1e49fb16a8e5a2f74c768
|
4
|
+
data.tar.gz: 18757357c5b9958d68e5cbba48e098788f5182d5942b532eb56554204c2df66a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed60f8a51749c1989332104c4282fb95e1c85cd842893335437d29666ac17217035dd8fcd7db6fbfd7406b3da5e24aa2fc1110e0dd86a6c59fb167163dd23b6b
|
7
|
+
data.tar.gz: c2e023025e03f76944a3a9b8459acfd2a18d1c8ca89cbc4a3753d60bc5cc713afabd1a7087e2dddea6ca01fe8b28c644ff1dcf8f477d553332931b7861111a89
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
## v0.1.1
|
4
|
+
|
5
|
+
2020-04-22
|
6
|
+
|
7
|
+
- [`Feature`] Create document by docsify([def4463](https://github.com/yukihirop/r2-oas/pull/99))
|
8
|
+
- [`Breaking`] Do not generate component schema when http_status equal 204 and 404 by default ([f7fcafd](https://github.com/yukihirop/r2-oas/pull/103))
|
9
|
+
|
10
|
+
|
1
11
|
## v0.1.0
|
2
12
|
|
3
|
-
|
13
|
+
2019-10-22 / The day of the throne (called 即位礼正殿の儀の行われる日 in Japanease)
|
14
|
+
|
15
|
+
- first release
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
r2-oas (0.1.
|
4
|
+
r2-oas (0.1.2)
|
5
5
|
docker-api (~> 1.34.2)
|
6
6
|
easy_diff (~> 1.0.0)
|
7
7
|
eventmachine (~> 1.2.0)
|
@@ -13,77 +13,89 @@ PATH
|
|
13
13
|
GEM
|
14
14
|
remote: https://rubygems.org/
|
15
15
|
specs:
|
16
|
-
actioncable (
|
17
|
-
actionpack (=
|
16
|
+
actioncable (6.0.2.2)
|
17
|
+
actionpack (= 6.0.2.2)
|
18
18
|
nio4r (~> 2.0)
|
19
19
|
websocket-driver (>= 0.6.1)
|
20
|
-
|
21
|
-
actionpack (=
|
22
|
-
|
23
|
-
|
20
|
+
actionmailbox (6.0.2.2)
|
21
|
+
actionpack (= 6.0.2.2)
|
22
|
+
activejob (= 6.0.2.2)
|
23
|
+
activerecord (= 6.0.2.2)
|
24
|
+
activestorage (= 6.0.2.2)
|
25
|
+
activesupport (= 6.0.2.2)
|
26
|
+
mail (>= 2.7.1)
|
27
|
+
actionmailer (6.0.2.2)
|
28
|
+
actionpack (= 6.0.2.2)
|
29
|
+
actionview (= 6.0.2.2)
|
30
|
+
activejob (= 6.0.2.2)
|
24
31
|
mail (~> 2.5, >= 2.5.4)
|
25
32
|
rails-dom-testing (~> 2.0)
|
26
|
-
actionpack (
|
27
|
-
actionview (=
|
28
|
-
activesupport (=
|
29
|
-
rack (~> 2.0)
|
33
|
+
actionpack (6.0.2.2)
|
34
|
+
actionview (= 6.0.2.2)
|
35
|
+
activesupport (= 6.0.2.2)
|
36
|
+
rack (~> 2.0, >= 2.0.8)
|
30
37
|
rack-test (>= 0.6.3)
|
31
38
|
rails-dom-testing (~> 2.0)
|
32
|
-
rails-html-sanitizer (~> 1.0, >= 1.0
|
33
|
-
|
34
|
-
|
39
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
40
|
+
actiontext (6.0.2.2)
|
41
|
+
actionpack (= 6.0.2.2)
|
42
|
+
activerecord (= 6.0.2.2)
|
43
|
+
activestorage (= 6.0.2.2)
|
44
|
+
activesupport (= 6.0.2.2)
|
45
|
+
nokogiri (>= 1.8.5)
|
46
|
+
actionview (6.0.2.2)
|
47
|
+
activesupport (= 6.0.2.2)
|
35
48
|
builder (~> 3.1)
|
36
49
|
erubi (~> 1.4)
|
37
50
|
rails-dom-testing (~> 2.0)
|
38
|
-
rails-html-sanitizer (~> 1.
|
39
|
-
activejob (
|
40
|
-
activesupport (=
|
51
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
52
|
+
activejob (6.0.2.2)
|
53
|
+
activesupport (= 6.0.2.2)
|
41
54
|
globalid (>= 0.3.6)
|
42
|
-
activemodel (
|
43
|
-
activesupport (=
|
44
|
-
activerecord (
|
45
|
-
activemodel (=
|
46
|
-
activesupport (=
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
activerecord (=
|
55
|
+
activemodel (6.0.2.2)
|
56
|
+
activesupport (= 6.0.2.2)
|
57
|
+
activerecord (6.0.2.2)
|
58
|
+
activemodel (= 6.0.2.2)
|
59
|
+
activesupport (= 6.0.2.2)
|
60
|
+
activestorage (6.0.2.2)
|
61
|
+
actionpack (= 6.0.2.2)
|
62
|
+
activejob (= 6.0.2.2)
|
63
|
+
activerecord (= 6.0.2.2)
|
51
64
|
marcel (~> 0.3.1)
|
52
|
-
activesupport (
|
65
|
+
activesupport (6.0.2.2)
|
53
66
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
54
67
|
i18n (>= 0.7, < 2)
|
55
68
|
minitest (~> 5.1)
|
56
69
|
tzinfo (~> 1.1)
|
57
|
-
|
70
|
+
zeitwerk (~> 2.2)
|
58
71
|
ast (2.4.0)
|
59
|
-
builder (3.2.
|
60
|
-
childprocess (
|
61
|
-
rake (< 13.0)
|
72
|
+
builder (3.2.4)
|
73
|
+
childprocess (3.0.0)
|
62
74
|
coderay (1.1.2)
|
63
|
-
concurrent-ruby (1.1.
|
75
|
+
concurrent-ruby (1.1.6)
|
64
76
|
coveralls (0.8.23)
|
65
77
|
json (>= 1.8, < 3)
|
66
78
|
simplecov (~> 0.16.1)
|
67
79
|
term-ansicolor (~> 1.3)
|
68
80
|
thor (>= 0.19.4, < 2.0)
|
69
81
|
tins (~> 1.6)
|
70
|
-
crass (1.0.
|
82
|
+
crass (1.0.6)
|
71
83
|
diff-lcs (1.3)
|
72
84
|
docile (1.3.2)
|
73
85
|
docker-api (1.34.2)
|
74
86
|
excon (>= 0.47.0)
|
75
87
|
multi_json
|
76
88
|
easy_diff (1.0.0)
|
77
|
-
erubi (1.
|
89
|
+
erubi (1.9.0)
|
78
90
|
eventmachine (1.2.7)
|
79
|
-
excon (0.
|
91
|
+
excon (0.73.0)
|
80
92
|
globalid (0.4.2)
|
81
93
|
activesupport (>= 4.2.0)
|
82
|
-
i18n (1.
|
94
|
+
i18n (1.8.2)
|
83
95
|
concurrent-ruby (~> 1.0)
|
84
96
|
jaro_winkler (1.5.3)
|
85
97
|
json (2.2.0)
|
86
|
-
loofah (2.
|
98
|
+
loofah (2.5.0)
|
87
99
|
crass (~> 1.0.2)
|
88
100
|
nokogiri (>= 1.5.9)
|
89
101
|
mail (2.7.1)
|
@@ -91,51 +103,53 @@ GEM
|
|
91
103
|
marcel (0.3.3)
|
92
104
|
mimemagic (~> 0.3.2)
|
93
105
|
method_source (0.9.2)
|
94
|
-
mimemagic (0.3.
|
106
|
+
mimemagic (0.3.4)
|
95
107
|
mini_mime (1.0.2)
|
96
108
|
mini_portile2 (2.4.0)
|
97
|
-
minitest (5.
|
98
|
-
multi_json (1.
|
109
|
+
minitest (5.14.0)
|
110
|
+
multi_json (1.14.1)
|
99
111
|
nio4r (2.5.2)
|
100
|
-
nokogiri (1.10.
|
112
|
+
nokogiri (1.10.9)
|
101
113
|
mini_portile2 (~> 2.4.0)
|
102
|
-
paint (2.
|
114
|
+
paint (2.2.0)
|
103
115
|
parallel (1.17.0)
|
104
116
|
parser (2.6.3.0)
|
105
117
|
ast (~> 2.4.0)
|
106
118
|
pry (0.12.2)
|
107
119
|
coderay (~> 1.1.0)
|
108
120
|
method_source (~> 0.9.0)
|
109
|
-
rack (2.
|
121
|
+
rack (2.2.2)
|
110
122
|
rack-test (1.1.0)
|
111
123
|
rack (>= 1.0, < 3)
|
112
|
-
rails (
|
113
|
-
actioncable (=
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
124
|
+
rails (6.0.2.2)
|
125
|
+
actioncable (= 6.0.2.2)
|
126
|
+
actionmailbox (= 6.0.2.2)
|
127
|
+
actionmailer (= 6.0.2.2)
|
128
|
+
actionpack (= 6.0.2.2)
|
129
|
+
actiontext (= 6.0.2.2)
|
130
|
+
actionview (= 6.0.2.2)
|
131
|
+
activejob (= 6.0.2.2)
|
132
|
+
activemodel (= 6.0.2.2)
|
133
|
+
activerecord (= 6.0.2.2)
|
134
|
+
activestorage (= 6.0.2.2)
|
135
|
+
activesupport (= 6.0.2.2)
|
122
136
|
bundler (>= 1.3.0)
|
123
|
-
railties (=
|
137
|
+
railties (= 6.0.2.2)
|
124
138
|
sprockets-rails (>= 2.0.0)
|
125
139
|
rails-dom-testing (2.0.3)
|
126
140
|
activesupport (>= 4.2.0)
|
127
141
|
nokogiri (>= 1.6)
|
128
|
-
rails-html-sanitizer (1.
|
129
|
-
loofah (~> 2.
|
130
|
-
railties (
|
131
|
-
actionpack (=
|
132
|
-
activesupport (=
|
142
|
+
rails-html-sanitizer (1.3.0)
|
143
|
+
loofah (~> 2.3)
|
144
|
+
railties (6.0.2.2)
|
145
|
+
actionpack (= 6.0.2.2)
|
146
|
+
activesupport (= 6.0.2.2)
|
133
147
|
method_source
|
134
148
|
rake (>= 0.8.7)
|
135
|
-
thor (>= 0.
|
149
|
+
thor (>= 0.20.3, < 2.0)
|
136
150
|
rainbow (3.0.0)
|
137
|
-
rake (
|
138
|
-
regexp_parser (1.
|
151
|
+
rake (13.0.1)
|
152
|
+
regexp_parser (1.7.0)
|
139
153
|
rspec (3.8.0)
|
140
154
|
rspec-core (~> 3.8.0)
|
141
155
|
rspec-expectations (~> 3.8.0)
|
@@ -157,16 +171,16 @@ GEM
|
|
157
171
|
ruby-progressbar (~> 1.7)
|
158
172
|
unicode-display_width (>= 1.4.0, < 1.7)
|
159
173
|
ruby-progressbar (1.10.1)
|
160
|
-
rubyzip (
|
161
|
-
selenium-webdriver (3.142.
|
162
|
-
childprocess (>= 0.5, <
|
163
|
-
rubyzip (
|
174
|
+
rubyzip (2.3.0)
|
175
|
+
selenium-webdriver (3.142.7)
|
176
|
+
childprocess (>= 0.5, < 4.0)
|
177
|
+
rubyzip (>= 1.2.2)
|
164
178
|
simplecov (0.16.1)
|
165
179
|
docile (~> 1.1)
|
166
180
|
json (>= 1.8, < 3)
|
167
181
|
simplecov-html (~> 0.10.0)
|
168
182
|
simplecov-html (0.10.2)
|
169
|
-
sprockets (
|
183
|
+
sprockets (4.0.0)
|
170
184
|
concurrent-ruby (~> 1.0)
|
171
185
|
rack (> 1, < 3)
|
172
186
|
sprockets-rails (3.2.1)
|
@@ -177,10 +191,10 @@ GEM
|
|
177
191
|
term-ansicolor (1.7.1)
|
178
192
|
tins (~> 1.0)
|
179
193
|
terminal-table (1.6.0)
|
180
|
-
thor (0.
|
194
|
+
thor (1.0.1)
|
181
195
|
thread_safe (0.3.6)
|
182
196
|
tins (1.21.1)
|
183
|
-
tzinfo (1.2.
|
197
|
+
tzinfo (1.2.7)
|
184
198
|
thread_safe (~> 0.1)
|
185
199
|
unicode-display_width (1.6.0)
|
186
200
|
watir (6.16.5)
|
@@ -189,6 +203,7 @@ GEM
|
|
189
203
|
websocket-driver (0.7.1)
|
190
204
|
websocket-extensions (>= 0.1.0)
|
191
205
|
websocket-extensions (0.1.4)
|
206
|
+
zeitwerk (2.3.0)
|
192
207
|
|
193
208
|
PLATFORMS
|
194
209
|
ruby
|
@@ -198,7 +213,7 @@ DEPENDENCIES
|
|
198
213
|
coveralls
|
199
214
|
pry
|
200
215
|
r2-oas!
|
201
|
-
rake (~>
|
216
|
+
rake (~> 13.0)
|
202
217
|
rspec (~> 3.0)
|
203
218
|
rubocop
|
204
219
|
sqlite3
|
data/README.ja.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
[](https://coveralls.io/github/yukihirop/r2-oas)
|
5
5
|
[](https://codeclimate.com/github/yukihirop/r2-oas/maintainability)
|
6
6
|
|
7
|
-
|
7
|
+
Railsのルーティング情報からOpenAPI形式のドキュメントを生成し、閲覧・編集・管理するためのrakeタスクの提供をします。
|
8
8
|
|
9
9
|
```bash
|
10
10
|
bundle exec rake routes:oas:docs # ドキュメント生成
|
@@ -52,90 +52,11 @@ bundle exec routes:oas:docs
|
|
52
52
|
bundle exec routes:oas:editor
|
53
53
|
```
|
54
54
|
|
55
|
-
##
|
56
|
-
|
57
|
-
全ての設定は `オプショナル` です。設定してもしなくても構いません。
|
58
|
-
|
59
|
-
設定はrailsプロジェクトの `config/environments/development.rb` に書きます。
|
55
|
+
## 📚 Documents
|
60
56
|
|
61
|
-
|
57
|
+
公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas
|
62
58
|
|
63
|
-
|
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
|
94
|
-
|
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
|
-
```
|
59
|
+
## 📖 Usage
|
139
60
|
|
140
61
|
railsプロジェクトのルートディレクトリで以下のコマンドが実行可能です。
|
141
62
|
|
@@ -170,21 +91,6 @@ $ bundle exec rake routes:oas:paths_ls
|
|
170
91
|
$ bundle exec rake routes:oas:paths_stats
|
171
92
|
```
|
172
93
|
|
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
94
|
|
189
95
|
## ⚾️ sample
|
190
96
|
|
@@ -210,11 +116,11 @@ $ bundle exec rake routes:oas:paths_stats
|
|
210
116
|
|
211
117
|
## ❤️ Support OpenAPI Schema
|
212
118
|
|
213
|
-
|
214
|
-
|
215
|
-
|
119
|
+
OpenAPIの3.0.0をサポートしてます。
|
120
|
+
|
121
|
+
公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas/#/schema/3.0.0
|
216
122
|
|
217
|
-
## ❗️
|
123
|
+
## ❗️Convention over Configuration (CoC)
|
218
124
|
|
219
125
|
ツールを便利にするために、設定よりも制約があります。
|
220
126
|
|
@@ -231,323 +137,15 @@ $ bundle exec rake routes:oas:paths_stats
|
|
231
137
|
|
232
138
|
## ⚙ Configure
|
233
139
|
|
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` ディレクトリ以下のパスを書きます。
|
140
|
+
全ての設定は `オプショナル` です。設定してもしなくても構いません。
|
306
141
|
|
307
|
-
|
308
|
-
```
|
309
|
-
#account_user_role.yml # ignore
|
310
|
-
account.yml
|
311
|
-
account.yml # ignore
|
312
|
-
account.yml # ignore
|
313
|
-
```
|
142
|
+
公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas/#/setting/configure
|
314
143
|
|
315
144
|
## 💊 Life Cycle Methods (Hook Metohds)
|
316
145
|
|
317
146
|
ドキュメント生成時に、フックを可能にするメソッドを用意しております。
|
318
147
|
|
319
|
-
-
|
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
|
-
```
|
465
|
-
|
466
|
-
ドキュメント生成時にcomponents/schemas名を上書きしたい場合は以下の様にします。
|
467
|
-
|
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
|
-
```
|
477
|
-
|
478
|
-
`path_component` は `R2OAS::Routing::PathComponent` のインスタンスです。
|
479
|
-
|
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
|
493
|
-
```
|
494
|
-
|
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
|
506
|
-
|
507
|
-
after_create do |doc, schema_name|
|
508
|
-
# [重要] docへの破壊的な変更をしてください。
|
509
|
-
# [重要] railsが提供するメソッドを使用する事ができます。
|
510
|
-
doc.merge!({
|
511
|
-
# Something ....
|
512
|
-
})
|
513
|
-
end
|
514
|
-
end
|
515
|
-
```
|
516
|
-
|
517
|
-
ドキュメント生成時にcomponents/requestBodies名を上書きしたい場合は以下の様にします。
|
518
|
-
|
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
|
533
|
-
```
|
534
|
-
|
535
|
-
そして最後に設定を書きます。
|
536
|
-
|
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
|
548
|
-
```
|
549
|
-
|
550
|
-
これだけです。
|
148
|
+
公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas/#/usage/use_hook_methods
|
551
149
|
|
552
150
|
## 🔩 CORS
|
553
151
|
|