open_api_annotator 0.2.0 → 0.6.0
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/.github/workflows/test.yml +29 -0
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +14 -0
- data/README.md +1 -1
- data/gemfiles/rails-5.2.gemfile +8 -0
- data/gemfiles/rails-6.0.gemfile +8 -0
- data/lib/open_api_annotator/components_builder.rb +20 -5
- data/lib/open_api_annotator/config.rb +6 -0
- data/lib/open_api_annotator/paths_builder.rb +64 -14
- data/lib/open_api_annotator/serializer_annotatable.rb +1 -1
- data/lib/open_api_annotator/version.rb +1 -1
- data/open_api_annotator.gemspec +6 -5
- metadata +27 -25
- data/.travis.yml +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 928d9daca39028c7d5016fa2e44ca116891194210ebaee873e325240bff2a428
|
4
|
+
data.tar.gz: f40479f6b544ccef964c611acf974763bc205b623682b6114d66707253638b75
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bfb5f922e2b92ef554b3b2d042a108471a4fe666fd69ed9c242eeae1e48b1105af7dc30caafd8d7be64babeb478990918136563b1deedf1d3f18099addfd098
|
7
|
+
data.tar.gz: 7198242aec1d0c81b3e47e0ba44bcbbbfea679673f9bdf31de31c753b45aff536e4c15f46cd26b854220fbe249c82b3aa46d1a78f8b2cdc86920f26a36cdbfe2
|
@@ -0,0 +1,29 @@
|
|
1
|
+
name: test
|
2
|
+
on: [push, pull_request]
|
3
|
+
jobs:
|
4
|
+
test:
|
5
|
+
strategy:
|
6
|
+
matrix:
|
7
|
+
ruby: ["2.5", "2.6", "2.7", "3.0"]
|
8
|
+
gemfile: [Gemfile]
|
9
|
+
include:
|
10
|
+
- ruby: "2.7"
|
11
|
+
gemfile: "gemfiles/rails-6.0.gemfile"
|
12
|
+
- ruby: "2.6"
|
13
|
+
gemfile: "gemfiles/rails-5.2.gemfile"
|
14
|
+
|
15
|
+
env:
|
16
|
+
BUNDLE_GEMFILE: "${{ matrix.gemfile }}"
|
17
|
+
|
18
|
+
runs-on: ubuntu-latest
|
19
|
+
steps:
|
20
|
+
- uses: actions/checkout@v2
|
21
|
+
- uses: ruby/setup-ruby@v1
|
22
|
+
with:
|
23
|
+
ruby-version: ${{ matrix.ruby }}
|
24
|
+
bundler-cache: true
|
25
|
+
- run: bundle exec rake
|
26
|
+
- name: Send coverage
|
27
|
+
uses: paambaati/codeclimate-action@v2.7.5
|
28
|
+
env:
|
29
|
+
CC_TEST_REPORTER_ID: 921d046db793707b7d0c0d1305970a137fdf98fbc6ceeb6c355c44757040244f
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.0.2
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
## Not released yet
|
2
|
+
|
3
|
+
## 0.6.0
|
4
|
+
- Support Ruby 3.0 and Rails 6.1
|
5
|
+
## 0.5.0
|
6
|
+
- Allow using with rails 6
|
7
|
+
|
8
|
+
## 0.4.0
|
9
|
+
- Enable to annotate primitive types to endpoint #11
|
10
|
+
|
11
|
+
## 0.3.0
|
12
|
+
- Add path parameters to parameters #8
|
13
|
+
- Enable add always requried fields #9
|
14
|
+
|
1
15
|
## 0.1.0
|
2
16
|
First release
|
3
17
|
|
data/README.md
CHANGED
@@ -76,7 +76,7 @@ end
|
|
76
76
|
|
77
77
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
78
78
|
|
79
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number
|
79
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number using `bundle exec bump patch`(or minor, major), and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
80
80
|
|
81
81
|
## Contributing
|
82
82
|
|
@@ -21,6 +21,10 @@ module OpenApiAnnotator
|
|
21
21
|
schema.properties.merge!(build_attribute_properties(serializer))
|
22
22
|
schema.properties.merge!(build_has_many_association_properties(serializer))
|
23
23
|
schema.properties.merge!(build_has_one_and_belongs_to_association_properties(serializer))
|
24
|
+
required_fields = OpenApiAnnotator.config.always_required_fields
|
25
|
+
if required_fields.present?
|
26
|
+
schema.required = required_fields.select{|field| schema.properties[field] }
|
27
|
+
end
|
24
28
|
schema
|
25
29
|
end
|
26
30
|
|
@@ -28,11 +32,22 @@ module OpenApiAnnotator
|
|
28
32
|
properties = {}
|
29
33
|
serializer.open_api_attributes.each do |attribute|
|
30
34
|
next unless attribute.valid?
|
31
|
-
properties[attribute.name.to_sym] =
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
35
|
+
properties[attribute.name.to_sym] = if attribute.type.is_a?(Array)
|
36
|
+
OpenApi::Schema.new(
|
37
|
+
type: "array",
|
38
|
+
items: OpenApi::Schema.new(
|
39
|
+
type: attribute.type.first,
|
40
|
+
format: attribute.format,
|
41
|
+
nullable: attribute.nullable,
|
42
|
+
)
|
43
|
+
)
|
44
|
+
else
|
45
|
+
OpenApi::Schema.new(
|
46
|
+
type: attribute.type,
|
47
|
+
format: attribute.format,
|
48
|
+
nullable: attribute.nullable,
|
49
|
+
)
|
50
|
+
end
|
36
51
|
end
|
37
52
|
properties
|
38
53
|
end
|
@@ -5,6 +5,7 @@ module OpenApiAnnotator
|
|
5
5
|
:path_regexp,
|
6
6
|
:application_controller_class_name,
|
7
7
|
:application_serializer_class_name,
|
8
|
+
:always_required_fields,
|
8
9
|
)
|
9
10
|
def application_serializer_class
|
10
11
|
if application_serializer_class_name
|
@@ -50,6 +51,7 @@ module OpenApiAnnotator
|
|
50
51
|
validate_path_regexp!
|
51
52
|
validate_application_controller_class_name!
|
52
53
|
validate_application_serializer_class_name!
|
54
|
+
validate_always_required_fields!
|
53
55
|
end
|
54
56
|
|
55
57
|
def validate_info!
|
@@ -95,6 +97,10 @@ module OpenApiAnnotator
|
|
95
97
|
# Do nothing
|
96
98
|
end
|
97
99
|
|
100
|
+
def validate_always_required_fields!
|
101
|
+
# Do nothing
|
102
|
+
end
|
103
|
+
|
98
104
|
class InvalidError < StandardError; end
|
99
105
|
end
|
100
106
|
end
|
@@ -23,14 +23,26 @@ module OpenApiAnnotator
|
|
23
23
|
media_type = resolve_media_type(route.controller_name, route.action_name)
|
24
24
|
description = build_description(route.controller_name, route.action_name)
|
25
25
|
next unless media_type
|
26
|
+
operation = OpenApi::Operation.new(responses: OpenApi::Responses.new)
|
26
27
|
response = OpenApi::Response.new(
|
27
28
|
description: description,
|
28
29
|
content: {
|
29
30
|
"application/json" => media_type,
|
30
31
|
}
|
31
32
|
)
|
32
|
-
operation = OpenApi::Operation.new(responses: OpenApi::Responses.new)
|
33
33
|
operation.responses["200"] = response
|
34
|
+
route.parameters.each do |parameter|
|
35
|
+
parameter = OpenApi::Parameter.new(
|
36
|
+
name: parameter[:name],
|
37
|
+
in: :path,
|
38
|
+
required: true,
|
39
|
+
schema: OpenApi::Schema.new(
|
40
|
+
type: :string
|
41
|
+
)
|
42
|
+
)
|
43
|
+
operation.parameters = [] unless operation.parameters
|
44
|
+
operation.parameters.push(parameter)
|
45
|
+
end
|
34
46
|
path_item.operations[route.http_verb.underscore] = operation
|
35
47
|
end
|
36
48
|
path_item
|
@@ -42,9 +54,21 @@ module OpenApiAnnotator
|
|
42
54
|
|
43
55
|
case type
|
44
56
|
when Array
|
45
|
-
|
57
|
+
name = build_type_name(type.first)
|
58
|
+
"Returns an array of #{name}"
|
59
|
+
else
|
60
|
+
name = build_type_name(type)
|
61
|
+
"Returns a #{name}"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def build_type_name(type)
|
66
|
+
type = convert_primitive_class_to_data_type(type)
|
67
|
+
case type
|
68
|
+
when OpenApi::DataType
|
69
|
+
"#{type.name}"
|
46
70
|
when Class
|
47
|
-
"
|
71
|
+
"#{type.name}"
|
48
72
|
else
|
49
73
|
raise "not supported class #{type.class}"
|
50
74
|
end
|
@@ -56,18 +80,39 @@ module OpenApiAnnotator
|
|
56
80
|
|
57
81
|
case type
|
58
82
|
when Array
|
59
|
-
|
60
|
-
|
61
|
-
|
83
|
+
schema_of_array = resolve_media_type_schema(type.first)
|
84
|
+
schema = OpenApi::Schema.new(type: "array", items: schema_of_array)
|
85
|
+
OpenApi::MediaType.new(schema: schema)
|
86
|
+
else
|
87
|
+
schema = resolve_media_type_schema(type)
|
62
88
|
OpenApi::MediaType.new(schema: schema)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def resolve_media_type_schema(type)
|
93
|
+
type = convert_primitive_class_to_data_type(type)
|
94
|
+
case type
|
95
|
+
when OpenApi::DataType
|
96
|
+
OpenApi::Schema.new(type: type.name, format: type.format)
|
63
97
|
when Class
|
64
|
-
|
65
|
-
OpenApi::MediaType.new(schema: reference)
|
98
|
+
OpenApi::Reference.new(ref: "#/components/schemas/#{type.name}")
|
66
99
|
else
|
67
100
|
raise "not supported class #{type.class}"
|
68
101
|
end
|
69
102
|
end
|
70
103
|
|
104
|
+
def convert_primitive_class_to_data_type(type)
|
105
|
+
if type == String
|
106
|
+
OpenApi::DataType.new(:string, :string, :string)
|
107
|
+
elsif type == Integer
|
108
|
+
OpenApi::DataType.new(:integer, :integer, :int32)
|
109
|
+
elsif type == Float
|
110
|
+
OpenApi::DataType.new(:float, :number, :float)
|
111
|
+
else
|
112
|
+
type
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
71
116
|
def resolve_type(controller_name, action_name)
|
72
117
|
controller_class_name = "#{controller_name}_controller".classify
|
73
118
|
begin
|
@@ -81,38 +126,43 @@ module OpenApiAnnotator
|
|
81
126
|
end
|
82
127
|
end
|
83
128
|
|
84
|
-
Route = Struct.new(:http_verb, :path, :controller_name, :action_name) do
|
85
|
-
def initialize(http_verb:, path:, controller_name:, action_name:)
|
129
|
+
Route = Struct.new(:http_verb, :path, :controller_name, :action_name, :parameters) do
|
130
|
+
def initialize(http_verb:, path:, controller_name:, action_name:, parameters: [])
|
86
131
|
self.http_verb = http_verb
|
87
132
|
self.path = path
|
88
133
|
self.controller_name = controller_name
|
89
134
|
self.action_name = action_name
|
135
|
+
self.parameters = parameters
|
90
136
|
end
|
91
137
|
end
|
92
138
|
|
93
139
|
class RoutesFinder
|
94
140
|
def find_all
|
95
141
|
@routes ||= Rails.application.routes.routes.routes.map do |route|
|
96
|
-
|
142
|
+
parameters = []
|
143
|
+
path = PathResolver.new.resolve(route.path.ast, parameters)
|
97
144
|
controller = route.requirements[:controller]
|
98
145
|
action = route.requirements[:action]
|
99
|
-
Route.new(http_verb: route.verb, path: path, controller_name: controller, action_name: action)
|
146
|
+
Route.new(http_verb: route.verb, path: path, controller_name: controller, action_name: action, parameters: parameters)
|
100
147
|
end
|
101
148
|
end
|
102
149
|
end
|
103
150
|
|
104
151
|
class PathResolver
|
105
|
-
def resolve(ast)
|
152
|
+
def resolve(ast, parameters_context = [])
|
106
153
|
res = ""
|
107
154
|
if ast.type == :CAT
|
108
155
|
left = ast.left
|
109
156
|
res +=
|
110
157
|
if left.type == :SYMBOL
|
158
|
+
parameters_context.push({
|
159
|
+
name: left.name,
|
160
|
+
})
|
111
161
|
"{#{left.name}}"
|
112
162
|
else
|
113
163
|
left.to_s
|
114
164
|
end
|
115
|
-
res += resolve(ast.right)
|
165
|
+
res += resolve(ast.right, parameters_context)
|
116
166
|
end
|
117
167
|
res
|
118
168
|
end
|
@@ -34,7 +34,7 @@ module OpenApiAnnotator
|
|
34
34
|
validate_open_api_format!(options[:format])
|
35
35
|
validate_open_api_nullable!(options[:nullable])
|
36
36
|
rescue ValidationError => e
|
37
|
-
Rails.logger.warn(e.message)
|
37
|
+
Rails.logger.warn("Within #{self.name}, #{field}: #{e.message}")
|
38
38
|
end
|
39
39
|
|
40
40
|
def validate_open_api_type!(type)
|
data/open_api_annotator.gemspec
CHANGED
@@ -21,17 +21,18 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
|
-
spec.add_dependency "open_api", ">= 0.
|
24
|
+
spec.add_dependency "open_api", ">= 0.5.0"
|
25
25
|
spec.add_dependency "active_model_serializers", "~> 0.10.0"
|
26
26
|
|
27
|
-
rails_versions = ['>=
|
27
|
+
rails_versions = ['>= 5.0', '< 6.2']
|
28
28
|
spec.add_dependency "actionpack", rails_versions
|
29
29
|
spec.add_dependency "railties", rails_versions
|
30
30
|
|
31
|
-
spec.add_development_dependency "bundler", "~>
|
32
|
-
spec.add_development_dependency "rake", "~>
|
31
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
32
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
33
33
|
spec.add_development_dependency "rspec", "~> 3.0"
|
34
34
|
spec.add_development_dependency "pry"
|
35
|
-
|
35
|
+
# Pin to 1.17 due to https://github.com/codeclimate/test-reporter/issues/413
|
36
|
+
spec.add_development_dependency "simplecov", "~> 0.17.0"
|
36
37
|
spec.add_development_dependency "bump"
|
37
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: open_api_annotator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kent Nagata
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: open_api
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.5.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: 0.
|
26
|
+
version: 0.5.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: active_model_serializers
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,68 +44,68 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '5.0'
|
48
48
|
- - "<"
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: '6'
|
50
|
+
version: '6.2'
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
55
|
- - ">="
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version: '
|
57
|
+
version: '5.0'
|
58
58
|
- - "<"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '6'
|
60
|
+
version: '6.2'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: railties
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - ">="
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '5.0'
|
68
68
|
- - "<"
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: '6'
|
70
|
+
version: '6.2'
|
71
71
|
type: :runtime
|
72
72
|
prerelease: false
|
73
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
75
|
- - ">="
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
77
|
+
version: '5.0'
|
78
78
|
- - "<"
|
79
79
|
- !ruby/object:Gem::Version
|
80
|
-
version: '6'
|
80
|
+
version: '6.2'
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: bundler
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
84
84
|
requirements:
|
85
85
|
- - "~>"
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version: '
|
87
|
+
version: '2.0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
90
|
version_requirements: !ruby/object:Gem::Requirement
|
91
91
|
requirements:
|
92
92
|
- - "~>"
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: '
|
94
|
+
version: '2.0'
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: rake
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
99
|
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: '
|
101
|
+
version: '13.0'
|
102
102
|
type: :development
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
106
|
- - "~>"
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
version: '
|
108
|
+
version: '13.0'
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
110
|
name: rspec
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
@@ -138,16 +138,16 @@ dependencies:
|
|
138
138
|
name: simplecov
|
139
139
|
requirement: !ruby/object:Gem::Requirement
|
140
140
|
requirements:
|
141
|
-
- - "
|
141
|
+
- - "~>"
|
142
142
|
- !ruby/object:Gem::Version
|
143
|
-
version:
|
143
|
+
version: 0.17.0
|
144
144
|
type: :development
|
145
145
|
prerelease: false
|
146
146
|
version_requirements: !ruby/object:Gem::Requirement
|
147
147
|
requirements:
|
148
|
-
- - "
|
148
|
+
- - "~>"
|
149
149
|
- !ruby/object:Gem::Version
|
150
|
-
version:
|
150
|
+
version: 0.17.0
|
151
151
|
- !ruby/object:Gem::Dependency
|
152
152
|
name: bump
|
153
153
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,10 +170,10 @@ executables: []
|
|
170
170
|
extensions: []
|
171
171
|
extra_rdoc_files: []
|
172
172
|
files:
|
173
|
+
- ".github/workflows/test.yml"
|
173
174
|
- ".gitignore"
|
174
175
|
- ".rspec"
|
175
176
|
- ".ruby-version"
|
176
|
-
- ".travis.yml"
|
177
177
|
- CHANGELOG.md
|
178
178
|
- CODE_OF_CONDUCT.md
|
179
179
|
- Gemfile
|
@@ -182,6 +182,8 @@ files:
|
|
182
182
|
- Rakefile
|
183
183
|
- bin/console
|
184
184
|
- bin/setup
|
185
|
+
- gemfiles/rails-5.2.gemfile
|
186
|
+
- gemfiles/rails-6.0.gemfile
|
185
187
|
- lib/open_api_annotator.rb
|
186
188
|
- lib/open_api_annotator/association.rb
|
187
189
|
- lib/open_api_annotator/attribute.rb
|
@@ -205,7 +207,7 @@ homepage: https://github.com/ngtk/open_api_annotator
|
|
205
207
|
licenses:
|
206
208
|
- MIT
|
207
209
|
metadata: {}
|
208
|
-
post_install_message:
|
210
|
+
post_install_message:
|
209
211
|
rdoc_options: []
|
210
212
|
require_paths:
|
211
213
|
- lib
|
@@ -220,8 +222,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
220
222
|
- !ruby/object:Gem::Version
|
221
223
|
version: '0'
|
222
224
|
requirements: []
|
223
|
-
rubygems_version: 3.
|
224
|
-
signing_key:
|
225
|
+
rubygems_version: 3.2.24
|
226
|
+
signing_key:
|
225
227
|
specification_version: 4
|
226
228
|
summary: OpenApi spec generation by bottom-up.
|
227
229
|
test_files: []
|
data/.travis.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
env:
|
2
|
-
global:
|
3
|
-
- CC_TEST_REPORTER_ID=921d046db793707b7d0c0d1305970a137fdf98fbc6ceeb6c355c44757040244f
|
4
|
-
sudo: false
|
5
|
-
language: ruby
|
6
|
-
rvm:
|
7
|
-
- 2.4.4
|
8
|
-
- 2.5.1
|
9
|
-
before_install: gem install bundler -v 1.16.1
|
10
|
-
before_script:
|
11
|
-
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
12
|
-
- chmod +x ./cc-test-reporter
|
13
|
-
- ./cc-test-reporter before-build
|
14
|
-
after_script:
|
15
|
-
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|