swagalicious 0.1.0 → 0.4.1
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/Gemfile.lock +49 -18
- data/README.md +2 -4
- data/lib/core/ext/hash.rb +13 -5
- data/lib/swagalicious.rb +13 -13
- data/lib/swagalicious/configuration.rb +1 -1
- data/lib/swagalicious/example_group_helpers.rb +1 -1
- data/lib/swagalicious/example_helpers.rb +13 -3
- data/lib/swagalicious/extended_schema.rb +1 -1
- data/lib/swagalicious/request_factory.rb +1 -1
- data/lib/swagalicious/response_validator.rb +2 -2
- data/lib/swagalicious/swagger_formatter.rb +70 -49
- data/lib/swagalicious/version.rb +2 -2
- data/swagalicious.gemspec +7 -4
- metadata +43 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5c37b19faf98f5e71159ac6285f997cb4387f8e4647087f19d33546fee346a7
|
4
|
+
data.tar.gz: fdab1f1246d2eb02a3d8279f6db96e5f3b067ebfef940c5e9cbb558525b60680
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2197185fc859b4cc8912aeb8467c3dd3097df510b0ba790ee194d1a22317479be3e1a635e21eac7d27803d1e59a2ef6bb42c958eea555dbb8436389d19a67043
|
7
|
+
data.tar.gz: 47d027e1184e3e7e74a6896b3d56f04a1ea096b287b964b5578489fe522b61cea4125380ae96f1f368e295b621fa98df6fddbc92bb9cc3306eb830dd0a9a8d35
|
data/Gemfile.lock
CHANGED
@@ -1,50 +1,81 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
swagalicious (0.1
|
5
|
-
faraday (~> 1.0
|
4
|
+
swagalicious (0.3.1)
|
5
|
+
faraday (~> 1.3.0)
|
6
6
|
json-schema (~> 2.8.1)
|
7
|
-
oj (~> 3.
|
8
|
-
|
7
|
+
oj (~> 3.11.0)
|
8
|
+
rspec (~> 3.10.0)
|
9
9
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
12
12
|
specs:
|
13
|
+
activesupport (6.1.1)
|
14
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
15
|
+
i18n (>= 1.6, < 2)
|
16
|
+
minitest (>= 5.1)
|
17
|
+
tzinfo (~> 2.0)
|
18
|
+
zeitwerk (~> 2.3)
|
13
19
|
addressable (2.7.0)
|
14
20
|
public_suffix (>= 2.0.2, < 5.0)
|
21
|
+
byebug (11.1.3)
|
22
|
+
coderay (1.1.3)
|
23
|
+
concurrent-ruby (1.1.8)
|
15
24
|
diff-lcs (1.4.4)
|
16
|
-
|
25
|
+
factory_bot (6.1.0)
|
26
|
+
activesupport (>= 5.0.0)
|
27
|
+
faraday (1.3.0)
|
28
|
+
faraday-net_http (~> 1.0)
|
17
29
|
multipart-post (>= 1.2, < 3)
|
30
|
+
ruby2_keywords
|
31
|
+
faraday-net_http (1.0.1)
|
32
|
+
i18n (1.8.7)
|
33
|
+
concurrent-ruby (~> 1.0)
|
18
34
|
json-schema (2.8.1)
|
19
35
|
addressable (>= 2.4)
|
36
|
+
method_source (1.0.0)
|
37
|
+
minitest (5.14.3)
|
20
38
|
multipart-post (2.1.1)
|
21
|
-
oj (3.
|
39
|
+
oj (3.11.0)
|
40
|
+
pry (0.13.1)
|
41
|
+
coderay (~> 1.1)
|
42
|
+
method_source (~> 1.0)
|
43
|
+
pry-byebug (3.9.0)
|
44
|
+
byebug (~> 11.0)
|
45
|
+
pry (~> 0.13.0)
|
22
46
|
public_suffix (4.0.6)
|
23
47
|
rack (2.2.3)
|
24
48
|
rack-test (1.1.0)
|
25
49
|
rack (>= 1.0, < 3)
|
26
50
|
rake (12.3.3)
|
27
|
-
rspec (3.
|
28
|
-
rspec-core (~> 3.
|
29
|
-
rspec-expectations (~> 3.
|
30
|
-
rspec-mocks (~> 3.
|
31
|
-
rspec-core (3.
|
32
|
-
rspec-support (~> 3.
|
33
|
-
rspec-expectations (3.
|
51
|
+
rspec (3.10.0)
|
52
|
+
rspec-core (~> 3.10.0)
|
53
|
+
rspec-expectations (~> 3.10.0)
|
54
|
+
rspec-mocks (~> 3.10.0)
|
55
|
+
rspec-core (3.10.1)
|
56
|
+
rspec-support (~> 3.10.0)
|
57
|
+
rspec-expectations (3.10.1)
|
34
58
|
diff-lcs (>= 1.2.0, < 2.0)
|
35
|
-
rspec-support (~> 3.
|
36
|
-
rspec-mocks (3.
|
59
|
+
rspec-support (~> 3.10.0)
|
60
|
+
rspec-mocks (3.10.1)
|
37
61
|
diff-lcs (>= 1.2.0, < 2.0)
|
38
|
-
rspec-support (~> 3.
|
39
|
-
rspec-support (3.
|
62
|
+
rspec-support (~> 3.10.0)
|
63
|
+
rspec-support (3.10.1)
|
64
|
+
ruby2_keywords (0.0.4)
|
65
|
+
tzinfo (2.0.4)
|
66
|
+
concurrent-ruby (~> 1.0)
|
67
|
+
zeitwerk (2.4.2)
|
40
68
|
|
41
69
|
PLATFORMS
|
42
70
|
ruby
|
43
71
|
|
44
72
|
DEPENDENCIES
|
73
|
+
factory_bot (~> 6.1.0)
|
74
|
+
pry-byebug (~> 3.9.0)
|
75
|
+
rack-test (~> 1.1.0)
|
45
76
|
rake (~> 12.0)
|
46
77
|
rspec (~> 3.0)
|
47
78
|
swagalicious!
|
48
79
|
|
49
80
|
BUNDLED WITH
|
50
|
-
2.
|
81
|
+
2.2.6
|
data/README.md
CHANGED
@@ -27,13 +27,11 @@ Add the following to your `spec_helper.rb` or add a new `swagger_helper.rb`
|
|
27
27
|
```ruby
|
28
28
|
require 'swagalicious`
|
29
29
|
|
30
|
-
DEFINITIONS = Oj.load(File.read(File.expand_path("docs/definitions.json", __dir__))).freeze
|
31
|
-
|
32
30
|
RSpec.configure do |c|
|
33
31
|
c.swagger_root = "public/swagger_docs" # This is the relative path where the swagger docs will be output
|
34
32
|
c.swagger_docs = {
|
35
33
|
"path/to/swagger_doc.json" => {
|
36
|
-
|
34
|
+
openapi: "3.0.3",
|
37
35
|
basePath: "/api/",
|
38
36
|
version: "v1",
|
39
37
|
info: {
|
@@ -57,7 +55,7 @@ end
|
|
57
55
|
|
58
56
|
## Contributing
|
59
57
|
|
60
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
58
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/ehowe/swagalicious.
|
61
59
|
|
62
60
|
|
63
61
|
## License
|
data/lib/core/ext/hash.rb
CHANGED
@@ -1,9 +1,17 @@
|
|
1
1
|
class Hash
|
2
|
-
def deep_merge
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
def deep_merge(other_hash, &block)
|
3
|
+
dup.deep_merge!(other_hash)
|
4
|
+
end
|
5
|
+
|
6
|
+
def deep_merge!(other_hash, &block)
|
7
|
+
merge!(other_hash) do |key, this_val, other_val|
|
8
|
+
if this_val.is_a?(Hash) && other_val.is_a?(Hash)
|
9
|
+
this_val.deep_merge(other_val, &block)
|
10
|
+
elsif block_given?
|
11
|
+
block.call(key, this_val, other_val)
|
12
|
+
else
|
13
|
+
other_val
|
14
|
+
end
|
7
15
|
end
|
8
16
|
end
|
9
17
|
|
data/lib/swagalicious.rb
CHANGED
@@ -1,17 +1,21 @@
|
|
1
1
|
require "rspec/core"
|
2
2
|
|
3
|
-
require_relative "swagalicious/version"
|
3
|
+
require_relative "./swagalicious/version"
|
4
4
|
|
5
|
-
|
5
|
+
class Swagalicious
|
6
6
|
class Error < StandardError; end
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
require_relative "swagalicious/
|
13
|
-
require_relative "swagalicious/
|
14
|
-
require_relative "swagalicious/
|
8
|
+
def self.config
|
9
|
+
@config ||= Swagalicious::Configuration.new(RSpec.configuration)
|
10
|
+
end
|
11
|
+
|
12
|
+
require_relative "./swagalicious/configuration"
|
13
|
+
require_relative "./swagalicious/example_group_helpers"
|
14
|
+
require_relative "./swagalicious/example_helpers"
|
15
|
+
require_relative "./swagalicious/extended_schema"
|
16
|
+
require_relative "./swagalicious/request_factory"
|
17
|
+
require_relative "./swagalicious/response_validator"
|
18
|
+
require_relative "./swagalicious/swagger_formatter"
|
15
19
|
|
16
20
|
::RSpec::Core::ExampleGroup.define_example_group_method :path
|
17
21
|
|
@@ -23,8 +27,4 @@ module Swagalicious
|
|
23
27
|
c.extend Swagalicious::ExampleGroupHelpers, type: :doc
|
24
28
|
c.include Swagalicious::ExampleHelpers, type: :doc
|
25
29
|
end
|
26
|
-
|
27
|
-
def self.config
|
28
|
-
@config ||= Swagalicious::Configuration.new(RSpec.configuration)
|
29
|
-
end
|
30
30
|
end
|
@@ -5,7 +5,7 @@ require "oj"
|
|
5
5
|
|
6
6
|
require_relative "response_validator"
|
7
7
|
|
8
|
-
|
8
|
+
class Swagalicious
|
9
9
|
module ExampleHelpers
|
10
10
|
include Rack::Test::Methods
|
11
11
|
|
@@ -49,12 +49,22 @@ module Swagalicious
|
|
49
49
|
|
50
50
|
@body = Oj.load(body, symbol_keys: true)
|
51
51
|
|
52
|
+
metadata[:paths] ||= []
|
53
|
+
metadata[:paths] << request[:path]
|
54
|
+
|
52
55
|
if request[:payload]
|
53
56
|
metadata[:response][:request] = Oj.load(request[:payload])
|
54
57
|
end
|
55
58
|
|
56
|
-
metadata[:response][:examples]
|
57
|
-
|
59
|
+
metadata[:response][:examples] ||= {}
|
60
|
+
|
61
|
+
mime_types = metadata[:response][:produces] || ["application/json"]
|
62
|
+
full_title = metadata[:swagger_example_name] || "#{metadata[:operation][:summary]}: #{metadata[:description]}"
|
63
|
+
|
64
|
+
mime_types.each do |mime_type|
|
65
|
+
metadata[:response][:examples][mime_type] ||= {}
|
66
|
+
metadata[:response][:examples][mime_type][full_title] = @body
|
67
|
+
end
|
58
68
|
|
59
69
|
# Validates response matches the proper schema
|
60
70
|
Swagalicious::ResponseValidator.new.validate!(metadata, response)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "json"
|
2
2
|
|
3
|
-
|
3
|
+
class Swagalicious
|
4
4
|
class UnexpectedResponse < StandardError; end
|
5
5
|
|
6
6
|
class ResponseValidator
|
@@ -44,7 +44,7 @@ module Swagalicious
|
|
44
44
|
.merge(schemas)
|
45
45
|
|
46
46
|
errors = JSON::Validator.fully_validate(validation_schema, body)
|
47
|
-
raise UnexpectedResponse, "Expected response body to match schema: #{errors
|
47
|
+
raise UnexpectedResponse, "Expected response body to match schema: #{errors.join(", ")}" unless errors.empty?
|
48
48
|
end
|
49
49
|
|
50
50
|
def definitions_or_component_schemas(swagger_doc, version)
|
@@ -2,67 +2,71 @@
|
|
2
2
|
|
3
3
|
require_relative "../core/ext/hash"
|
4
4
|
|
5
|
-
|
5
|
+
class Swagalicious
|
6
6
|
class SwaggerFormatter
|
7
|
-
RSpec::Core::Formatters.register self, :
|
7
|
+
RSpec::Core::Formatters.register self, :stop
|
8
8
|
|
9
|
-
def
|
9
|
+
def config
|
10
|
+
@config ||= Swagalicious.config
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(output, config = nil)
|
10
14
|
@output = output
|
11
15
|
@config = config
|
12
16
|
|
13
17
|
@output.puts "Generating Swagger docs ..."
|
14
18
|
end
|
15
19
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
20
|
+
def merge_metadata_to_document(doc, example)
|
21
|
+
metadata = example.metadata
|
22
|
+
# !metadata[:document] won"t work, since nil means we should generate
|
23
|
+
# docs.
|
24
|
+
return {} if metadata[:document] == false
|
25
|
+
return {} unless metadata.key?(:response)
|
26
|
+
# This is called multiple times per file!
|
27
|
+
# metadata[:operation] is also re-used between examples within file
|
28
|
+
# therefore be careful NOT to modify its content here.
|
29
|
+
upgrade_servers!(doc)
|
30
|
+
upgrade_oauth!(doc)
|
31
|
+
upgrade_response_produces!(doc, metadata)
|
32
|
+
upgrade_request_type!(metadata)
|
33
|
+
|
34
|
+
unless doc_version(doc).start_with?("2")
|
35
|
+
doc[:paths]&.each_pair do |_k, v|
|
36
|
+
v.each_pair do |_verb, value|
|
37
|
+
is_hash = value.is_a?(Hash)
|
38
|
+
if is_hash && value.dig(:parameters)
|
39
|
+
schema_param = value.dig(:parameters)&.find { |p| (p[:in] == :body || p[:in] == :formData) && p[:schema] }
|
40
|
+
mime_list = value.dig(:consumes)
|
41
|
+
if value && schema_param && mime_list
|
42
|
+
value[:requestBody] = { content: {} } unless value.dig(:requestBody, :content)
|
43
|
+
mime_list.each do |mime|
|
44
|
+
value[:requestBody][:content][mime] = { schema: schema_param[:schema] }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
value[:parameters].reject! { |p| p[:in] == :body || p[:in] == :formData }
|
49
|
+
end
|
50
|
+
remove_invalid_operation_keys!(value)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
doc.deep_merge!(metadata_to_swagger(metadata))
|
35
56
|
end
|
36
57
|
|
37
|
-
def stop(
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
is_hash = value.is_a?(Hash)
|
43
|
-
if is_hash && value.dig(:parameters)
|
44
|
-
schema_param = value.dig(:parameters)&.find { |p| (p[:in] == :body || p[:in] == :formData) && p[:schema] }
|
45
|
-
mime_list = value.dig(:consumes)
|
46
|
-
if value && schema_param && mime_list
|
47
|
-
value[:requestBody] = { content: {} } unless value.dig(:requestBody, :content)
|
48
|
-
mime_list.each do |mime|
|
49
|
-
value[:requestBody][:content][mime] = { schema: schema_param[:schema] }
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
value[:parameters].reject! { |p| p[:in] == :body || p[:in] == :formData }
|
54
|
-
end
|
55
|
-
remove_invalid_operation_keys!(value)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
58
|
+
def stop(notification = nil)
|
59
|
+
config.swagger_docs.each do |url_path, doc|
|
60
|
+
examples = notification.examples.select { |e| e.metadata[:swagger_doc] == url_path }
|
61
|
+
|
62
|
+
merged_doc = examples.each_with_object(doc) { |e, doc| doc = doc.deep_merge!(merge_metadata_to_document(doc, e)) }
|
59
63
|
|
60
|
-
file_path = File.join(
|
64
|
+
file_path = File.join(config.swagger_root, url_path)
|
61
65
|
dirname = File.dirname(file_path)
|
62
66
|
FileUtils.mkdir_p dirname unless File.exist?(dirname)
|
63
67
|
|
64
68
|
File.open(file_path, "w") do |file|
|
65
|
-
file.write(pretty_generate(
|
69
|
+
file.write(pretty_generate(merged_doc))
|
66
70
|
end
|
67
71
|
|
68
72
|
@output.puts "Swagger doc generated at #{file_path}"
|
@@ -72,7 +76,7 @@ module Swagalicious
|
|
72
76
|
private
|
73
77
|
|
74
78
|
def pretty_generate(doc)
|
75
|
-
if
|
79
|
+
if config.swagger_format == :yaml
|
76
80
|
clean_doc = yaml_prepare(doc)
|
77
81
|
YAML.dump(clean_doc)
|
78
82
|
else # config errors are thrown in "def swagger_format", no throw needed here
|
@@ -88,6 +92,19 @@ module Swagalicious
|
|
88
92
|
def metadata_to_swagger(metadata)
|
89
93
|
response_code = metadata[:response][:code]
|
90
94
|
response = metadata[:response].reject { |k, _v| k == :code }
|
95
|
+
examples = response.delete(:examples) || []
|
96
|
+
|
97
|
+
examples.each do |mime_type, titles|
|
98
|
+
titles.each do |title, example|
|
99
|
+
next unless response[:content][mime_type]
|
100
|
+
|
101
|
+
response[:content][mime_type][:examples] ||= {}
|
102
|
+
|
103
|
+
response[:content][mime_type][:examples][title] ||= {}
|
104
|
+
|
105
|
+
response[:content][mime_type][:examples][title][:value] = example
|
106
|
+
end
|
107
|
+
end
|
91
108
|
|
92
109
|
verb = metadata[:operation][:verb]
|
93
110
|
operation = metadata[:operation]
|
@@ -103,7 +120,7 @@ module Swagalicious
|
|
103
120
|
end
|
104
121
|
|
105
122
|
def doc_version(doc)
|
106
|
-
doc[:openapi] || doc[:swagger] || "3"
|
123
|
+
doc[:openapi] || doc[:swagger] || "3.0.0"
|
107
124
|
end
|
108
125
|
|
109
126
|
def upgrade_response_produces!(swagger_doc, metadata)
|
@@ -121,7 +138,11 @@ module Swagalicious
|
|
121
138
|
|
122
139
|
mime_list.each do |mime_type|
|
123
140
|
# TODO upgrade to have content-type specific schema
|
124
|
-
|
141
|
+
body = target_node
|
142
|
+
.fetch(:body, {})
|
143
|
+
.fetch(mime_type, {})
|
144
|
+
|
145
|
+
target_node[:content][mime_type] = { schema: schema }.merge(body)
|
125
146
|
end
|
126
147
|
end
|
127
148
|
|
data/lib/swagalicious/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = "0.1
|
1
|
+
class Swagalicious
|
2
|
+
VERSION = "0.4.1"
|
3
3
|
end
|
data/swagalicious.gemspec
CHANGED
@@ -24,9 +24,12 @@ Gem::Specification.new do |spec|
|
|
24
24
|
end
|
25
25
|
spec.require_paths = ["lib"]
|
26
26
|
|
27
|
-
spec.add_dependency "faraday", "~> 1.0
|
27
|
+
spec.add_dependency "faraday", "~> 1.3.0"
|
28
28
|
spec.add_dependency "json-schema", "~> 2.8.1"
|
29
|
-
spec.add_dependency "oj", "~> 3.
|
30
|
-
spec.add_dependency "
|
31
|
-
|
29
|
+
spec.add_dependency "oj", "~> 3.11.0"
|
30
|
+
spec.add_dependency "rspec", "~> 3.10.0"
|
31
|
+
|
32
|
+
spec.add_development_dependency "factory_bot", "~> 6.1.0"
|
33
|
+
spec.add_development_dependency "pry-byebug", "~> 3.9.0"
|
34
|
+
spec.add_development_dependency "rack-test", "~> 1.1.0"
|
32
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: swagalicious
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eugene Howe
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0
|
19
|
+
version: 1.3.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.0
|
26
|
+
version: 1.3.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: json-schema
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,42 +44,70 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.
|
47
|
+
version: 3.11.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.
|
54
|
+
version: 3.11.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 3.10.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 3.10.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: factory_bot
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 6.1.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 6.1.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry-byebug
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
89
|
version: 3.9.0
|
76
|
-
type: :
|
90
|
+
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: 3.9.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rack-test
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.1.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.1.0
|
83
111
|
description: This gem is almost a straight copy and paste of https://github.com/rswag/rswag/tree/master/rswag-specs
|
84
112
|
with the Rails specific code stripped out so it can be used in Rack applications
|
85
113
|
that don't use Rails.
|
@@ -118,7 +146,7 @@ metadata:
|
|
118
146
|
allowed_push_host: https://rubygems.org
|
119
147
|
homepage_uri: https://github.com/ehowe/swagalicious
|
120
148
|
source_code_uri: https://github.com/ehowe/swagalicious
|
121
|
-
post_install_message:
|
149
|
+
post_install_message:
|
122
150
|
rdoc_options: []
|
123
151
|
require_paths:
|
124
152
|
- lib
|
@@ -133,8 +161,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
161
|
- !ruby/object:Gem::Version
|
134
162
|
version: '0'
|
135
163
|
requirements: []
|
136
|
-
rubygems_version: 3.0.
|
137
|
-
signing_key:
|
164
|
+
rubygems_version: 3.0.8
|
165
|
+
signing_key:
|
138
166
|
specification_version: 4
|
139
167
|
summary: RSwag without Rails
|
140
168
|
test_files: []
|