sendgrid-ruby 6.3.9 → 6.5.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/.github/ISSUE_TEMPLATE/config.yml +10 -0
- data/.rubocop_todo.yml +2 -0
- data/.travis.yml +15 -14
- data/CHANGELOG.md +24 -0
- data/README.md +0 -1
- data/TROUBLESHOOTING.md +12 -0
- data/examples/helpers/mail/example.rb +5 -0
- data/lib/sendgrid/base_interface.rb +6 -3
- data/lib/sendgrid/helpers/mail/personalization.rb +3 -1
- data/lib/sendgrid/sendgrid.rb +3 -2
- data/lib/sendgrid/version.rb +1 -1
- data/spec/sendgrid/helpers/settings/mail_settings_dto_spec.rb +2 -2
- data/spec/sendgrid/helpers/settings/partner_settings_dto_spec.rb +2 -2
- data/spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb +2 -2
- data/spec/sendgrid/helpers/settings/user_settings_dto_spec.rb +2 -2
- data/test/sendgrid/test_sendgrid-ruby.rb +19 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e9ae3c96f2f17a8c259ea3f8e369e19c37bb8764074abe57a2cbf9af9e14879e
|
|
4
|
+
data.tar.gz: 2bd8adf75c2e77b81c5c8d5f6c3e01cb4d8a52ea25252bdea2e24b8cbb9dbaa2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5e6c60136a7aac529987dc16543daa49da5ad7f65120ab994e41f66f00a86665e68aeea7990089893d39f43161d4601ebc08df37f05264b9dc967a169f3fdb7b
|
|
7
|
+
data.tar.gz: f940ee99e5254db6ae88e5bc6297ec16f941ad6bf2f1e619c1cefc1605cf9577c8a838ce0423e2ba8dc7e58f875f88aedb287a1ef50e59e4676491cc0e1011d6
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
contact_links:
|
|
2
|
+
- name: Twilio SendGrid Support
|
|
3
|
+
url: https://support.sendgrid.com
|
|
4
|
+
about: Get Support
|
|
5
|
+
- name: Stack Overflow
|
|
6
|
+
url: https://stackoverflow.com/questions/tagged/sendgrid-ruby+or+sendgrid+ruby
|
|
7
|
+
about: Ask questions on Stack Overflow
|
|
8
|
+
- name: Documentation
|
|
9
|
+
url: https://sendgrid.com/docs/for-developers/
|
|
10
|
+
about: View Reference Documentation
|
data/.rubocop_todo.yml
CHANGED
|
@@ -34,6 +34,8 @@ Metrics/BlockLength:
|
|
|
34
34
|
# Configuration parameters: CountComments, CountAsOne.
|
|
35
35
|
Metrics/ClassLength:
|
|
36
36
|
Max: 2006
|
|
37
|
+
Exclude:
|
|
38
|
+
- 'test/sendgrid/test_sendgrid-ruby.rb'
|
|
37
39
|
|
|
38
40
|
# Offense count: 41
|
|
39
41
|
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods.
|
data/.travis.yml
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
language: ruby
|
|
2
2
|
env:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
- version=ruby:3.0
|
|
4
|
+
- version=ruby:2.7
|
|
5
|
+
- version=ruby:2.6
|
|
6
|
+
- version=ruby:2.5
|
|
7
|
+
- version=ruby:2.4
|
|
8
|
+
- version=jruby:9.2
|
|
9
9
|
gemfile:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
- gemfiles/Sinatra_1.gemfile
|
|
11
|
+
- gemfiles/Sinatra_2.gemfile
|
|
12
|
+
script:
|
|
13
|
+
- if [[ "$TRAVIS_BRANCH" == "main" || "$TRAVIS_BRANCH" == "travis" ]] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
|
14
|
+
echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin;
|
|
15
|
+
fi
|
|
16
|
+
- make test-docker
|
|
15
17
|
deploy:
|
|
16
18
|
provider: rubygems
|
|
17
|
-
api_key: $RUBYGEMS_API_KEY
|
|
19
|
+
api_key: "$RUBYGEMS_API_KEY"
|
|
18
20
|
gem: sendgrid-ruby
|
|
19
21
|
on:
|
|
20
22
|
tags: true
|
|
21
23
|
condition: $version = ruby:2.4 && $BUNDLE_GEMFILE = *"gemfiles/Sinatra_1.gemfile"
|
|
22
|
-
|
|
23
24
|
notifications:
|
|
24
25
|
slack:
|
|
25
26
|
if: branch = main
|
|
@@ -27,4 +28,4 @@ notifications:
|
|
|
27
28
|
on_success: never
|
|
28
29
|
on_failure: change
|
|
29
30
|
rooms:
|
|
30
|
-
|
|
31
|
+
secure: oSeohwM+ernyiRYSRLpNlICk0wgj0lku3y5LuouJLRHs45tCAzLZLbgxsor18wCSJkmhfn2vg4Rn969VnskFuj70OhJSLBKL4UXBnR1Ji0ClpfJlGojcbY/5Z8N/eGDrvf5ofA0Jc+L/ut+oSCMXnstEGbx4wBpPTajHuRtvb34=
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
|
|
4
|
+
[2021-10-18] Version 6.5.2
|
|
5
|
+
--------------------------
|
|
6
|
+
**Library - Docs**
|
|
7
|
+
- [PR #472](https://github.com/sendgrid/sendgrid-ruby/pull/472): improve signed webhook event validation docs. Thanks to [@shwetha-manvinkurke](https://github.com/shwetha-manvinkurke)!
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
[2021-09-08] Version 6.5.1
|
|
11
|
+
--------------------------
|
|
12
|
+
**Library - Chore**
|
|
13
|
+
- [PR #470](https://github.com/sendgrid/sendgrid-ruby/pull/470): add support for ruby 3.0. Thanks to [@shwetha-manvinkurke](https://github.com/shwetha-manvinkurke)!
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
[2021-08-11] Version 6.5.0
|
|
17
|
+
--------------------------
|
|
18
|
+
**Library - Feature**
|
|
19
|
+
- [PR #466](https://github.com/sendgrid/sendgrid-ruby/pull/466): Add From address to personalization. Thanks to [@grin](https://github.com/grin)!
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
[2021-02-10] Version 6.4.0
|
|
23
|
+
--------------------------
|
|
24
|
+
**Library - Feature**
|
|
25
|
+
- [PR #455](https://github.com/sendgrid/sendgrid-ruby/pull/455): Add http_options as a param in the SendGrid::API's constructor. Thanks to [@hoangtuanictvn](https://github.com/hoangtuanictvn)!
|
|
26
|
+
|
|
27
|
+
|
|
4
28
|
[2021-01-27] Version 6.3.9
|
|
5
29
|
--------------------------
|
|
6
30
|
**Library - Fix**
|
data/README.md
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://travis-ci.com/sendgrid/sendgrid-ruby)
|
|
4
4
|
[](https://badge.fury.io/rb/sendgrid-ruby)
|
|
5
|
-
[](https://dx.sendgrid.com/newsletter/ruby)
|
|
6
5
|
[](LICENSE)
|
|
7
6
|
[](https://twitter.com/sendgrid)
|
|
8
7
|
[](https://github.com/sendgrid/sendgrid-ruby/graphs/contributors)
|
data/TROUBLESHOOTING.md
CHANGED
|
@@ -17,6 +17,7 @@ If you can't find a solution below, please open an [issue](https://github.com/se
|
|
|
17
17
|
* [Rails Specifics](#rails-specifics)
|
|
18
18
|
* [Ruby Versions](#ruby-versions)
|
|
19
19
|
* [Viewing the Request Body](#viewing-the-request-body)
|
|
20
|
+
* [Verifying Event Webhooks](#signed-webhooks)
|
|
20
21
|
|
|
21
22
|
<a name="migrating"></a>
|
|
22
23
|
## Migrating from v2 to v3
|
|
@@ -137,3 +138,14 @@ You can do this before `response = sg.client.mail._('send').post(request_body: m
|
|
|
137
138
|
```ruby
|
|
138
139
|
puts mail.to_json
|
|
139
140
|
```
|
|
141
|
+
|
|
142
|
+
<a name="signed-webhooks"></a>
|
|
143
|
+
## Signed Webhook Verification
|
|
144
|
+
|
|
145
|
+
Twilio SendGrid's Event Webhook will notify a URL via HTTP POST with information about events that occur as your mail is processed. [This](https://docs.sendgrid.com/for-developers/tracking-events/getting-started-event-webhook-security-features) article covers all you need to know to secure the Event Webhook, allowing you to verify that incoming requests originate from Twilio SendGrid. The sendgrid-ruby library can help you verify these Signed Event Webhooks.
|
|
146
|
+
|
|
147
|
+
You can find the usage example [here](examples/helpers/eventwebhook/example.rb) and the tests [here](spec/sendgrid/helpers/eventwebhook/eventwebhook_spec.rb).
|
|
148
|
+
If you are still having trouble getting the validation to work, follow the following instructions:
|
|
149
|
+
- Be sure to use the *raw* payload for validation
|
|
150
|
+
- Be sure to include a trailing carriage return and newline in your payload
|
|
151
|
+
- In case of multi-event webhooks, make sure you include the trailing newline and carriage return after *each* event
|
|
@@ -18,6 +18,7 @@ def hello_world
|
|
|
18
18
|
puts response.headers
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
# rubocop:disable Metrics/AbcSize
|
|
21
22
|
def kitchen_sink
|
|
22
23
|
mail = SendGrid::Mail.new
|
|
23
24
|
mail.from = Email.new(email: 'test@example.com')
|
|
@@ -29,6 +30,9 @@ def kitchen_sink
|
|
|
29
30
|
personalization.add_cc(Email.new(email: 'test4@example.com', name: 'Example User'))
|
|
30
31
|
personalization.add_bcc(Email.new(email: 'test5@example.com', name: 'Example User'))
|
|
31
32
|
personalization.add_bcc(Email.new(email: 'test6@example.com', name: 'Example User'))
|
|
33
|
+
# Note, the domain of the from email property specified in any personalization must
|
|
34
|
+
# match the domain of the from email property specified at root level
|
|
35
|
+
personalization.from = Email.new(email: 'alias@example.com', name: "My alias")
|
|
32
36
|
personalization.subject = 'Hello World from the Personalized Twilio SendGrid Ruby Library'
|
|
33
37
|
personalization.add_header(Header.new(key: 'X-Test', value: 'True'))
|
|
34
38
|
personalization.add_header(Header.new(key: 'X-Mock', value: 'False'))
|
|
@@ -124,6 +128,7 @@ def kitchen_sink
|
|
|
124
128
|
puts response.body
|
|
125
129
|
puts response.headers
|
|
126
130
|
end
|
|
131
|
+
# rubocop:enable Metrics/AbcSize
|
|
127
132
|
|
|
128
133
|
def dynamic_template_data_hello_world
|
|
129
134
|
mail = Mail.new
|
|
@@ -4,7 +4,7 @@ require_relative 'version'
|
|
|
4
4
|
# Initialize the HTTP client
|
|
5
5
|
class BaseInterface
|
|
6
6
|
attr_accessor :client
|
|
7
|
-
attr_reader :request_headers, :host, :version, :impersonate_subuser
|
|
7
|
+
attr_reader :request_headers, :host, :version, :impersonate_subuser, :http_options
|
|
8
8
|
|
|
9
9
|
# * *Args* :
|
|
10
10
|
# - +auth+ -> authorization header value
|
|
@@ -14,8 +14,9 @@ class BaseInterface
|
|
|
14
14
|
# currently only "v3" is supported
|
|
15
15
|
# - +impersonate_subuser+ -> the subuser to impersonate, will be passed
|
|
16
16
|
# in the "On-Behalf-Of" header
|
|
17
|
+
# - +http_options+ -> http options that you want to be globally applied to each request
|
|
17
18
|
#
|
|
18
|
-
def initialize(auth:, host:, request_headers: nil, version: nil, impersonate_subuser: nil)
|
|
19
|
+
def initialize(auth:, host:, request_headers: nil, version: nil, impersonate_subuser: nil, http_options: {})
|
|
19
20
|
@auth = auth
|
|
20
21
|
@host = host
|
|
21
22
|
@version = version || 'v3'
|
|
@@ -31,7 +32,9 @@ class BaseInterface
|
|
|
31
32
|
@request_headers['On-Behalf-Of'] = @impersonate_subuser if @impersonate_subuser
|
|
32
33
|
|
|
33
34
|
@request_headers = @request_headers.merge(request_headers) if request_headers
|
|
35
|
+
@http_options = http_options
|
|
34
36
|
@client = SendGrid::Client.new(host: "#{@host}/#{@version}",
|
|
35
|
-
request_headers: @request_headers
|
|
37
|
+
request_headers: @request_headers,
|
|
38
|
+
http_options: @http_options)
|
|
36
39
|
end
|
|
37
40
|
end
|
|
@@ -5,10 +5,11 @@ module SendGrid
|
|
|
5
5
|
attr_reader :tos, :ccs, :bccs, :headers, :substitutions, :custom_args,
|
|
6
6
|
:dynamic_template_data
|
|
7
7
|
|
|
8
|
-
attr_accessor :send_at, :subject
|
|
8
|
+
attr_accessor :send_at, :subject, :from
|
|
9
9
|
|
|
10
10
|
def initialize
|
|
11
11
|
@tos = []
|
|
12
|
+
@from = nil
|
|
12
13
|
@ccs = []
|
|
13
14
|
@bccs = []
|
|
14
15
|
@subject = nil
|
|
@@ -59,6 +60,7 @@ module SendGrid
|
|
|
59
60
|
def to_json(*)
|
|
60
61
|
{
|
|
61
62
|
'to' => tos,
|
|
63
|
+
'from' => from,
|
|
62
64
|
'cc' => ccs,
|
|
63
65
|
'bcc' => bccs,
|
|
64
66
|
'subject' => subject,
|
data/lib/sendgrid/sendgrid.rb
CHANGED
|
@@ -9,12 +9,13 @@ module SendGrid
|
|
|
9
9
|
# currently only "v3" is supported
|
|
10
10
|
# - +impersonate_subuser+ -> the subuser to impersonate, will be passed
|
|
11
11
|
# in the "On-Behalf-Of" header
|
|
12
|
+
# - +http_options+ -> http options that you want to be globally applied to each request
|
|
12
13
|
#
|
|
13
|
-
def initialize(api_key:, host: nil, request_headers: nil, version: nil, impersonate_subuser: nil)
|
|
14
|
+
def initialize(api_key:, host: nil, request_headers: nil, version: nil, impersonate_subuser: nil, http_options: {})
|
|
14
15
|
auth = "Bearer #{api_key}"
|
|
15
16
|
host ||= 'https://api.sendgrid.com'
|
|
16
17
|
|
|
17
|
-
super(auth: auth, host: host, request_headers: request_headers, version: version, impersonate_subuser: impersonate_subuser)
|
|
18
|
+
super(auth: auth, host: host, request_headers: request_headers, version: version, impersonate_subuser: impersonate_subuser, http_options: http_options)
|
|
18
19
|
end
|
|
19
20
|
end
|
|
20
21
|
end
|
data/lib/sendgrid/version.rb
CHANGED
|
@@ -19,14 +19,14 @@ describe SendGrid::MailSettingsDto do
|
|
|
19
19
|
describe '.fetch' do
|
|
20
20
|
it 'calls get on sendgrid_client' do
|
|
21
21
|
args = { sendgrid_client: sendgrid_client, name: setting_name, query_params: {} }
|
|
22
|
-
expect(mail_settings.fetch(args)).to be_a SendGrid::Response
|
|
22
|
+
expect(mail_settings.fetch(**args)).to be_a SendGrid::Response
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
describe '.update' do
|
|
27
27
|
it 'calls patch on sendgrid_client' do
|
|
28
28
|
args = { sendgrid_client: sendgrid_client, name: setting_name, request_body: setting_params }
|
|
29
|
-
expect(mail_settings.update(args)).to be_a SendGrid::Response
|
|
29
|
+
expect(mail_settings.update(**args)).to be_a SendGrid::Response
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
end
|
|
@@ -11,14 +11,14 @@ describe SendGrid::PartnerSettingsDto do
|
|
|
11
11
|
describe '.fetch' do
|
|
12
12
|
it 'calls get on sendgrid_client' do
|
|
13
13
|
args = { sendgrid_client: sendgrid_client, name: setting_name, query_params: {} }
|
|
14
|
-
expect(partner_settings.fetch(args)).to be_a SendGrid::Response
|
|
14
|
+
expect(partner_settings.fetch(**args)).to be_a SendGrid::Response
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
describe '.update' do
|
|
19
19
|
it 'calls patch on sendgrid_client' do
|
|
20
20
|
args = { sendgrid_client: sendgrid_client, name: setting_name, request_body: setting_params }
|
|
21
|
-
expect(partner_settings.update(args)).to be_a SendGrid::Response
|
|
21
|
+
expect(partner_settings.update(**args)).to be_a SendGrid::Response
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -14,14 +14,14 @@ describe SendGrid::TrackingSettingsDto do
|
|
|
14
14
|
describe '.fetch' do
|
|
15
15
|
it 'calls get on sendgrid_client' do
|
|
16
16
|
args = { sendgrid_client: sendgrid_client, name: setting_name, query_params: {} }
|
|
17
|
-
expect(tracking_settings.fetch(args)).to be_a SendGrid::Response
|
|
17
|
+
expect(tracking_settings.fetch(**args)).to be_a SendGrid::Response
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
describe '.update' do
|
|
22
22
|
it 'calls patch on sendgrid_client' do
|
|
23
23
|
args = { sendgrid_client: sendgrid_client, name: setting_name, request_body: setting_params }
|
|
24
|
-
expect(tracking_settings.update(args)).to be_a SendGrid::Response
|
|
24
|
+
expect(tracking_settings.update(**args)).to be_a SendGrid::Response
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
end
|
|
@@ -11,14 +11,14 @@ describe SendGrid::UserSettingsDto do
|
|
|
11
11
|
describe '.fetch' do
|
|
12
12
|
it 'calls get on sendgrid_client' do
|
|
13
13
|
args = { sendgrid_client: sendgrid_client, name: setting_name, query_params: {} }
|
|
14
|
-
expect(user_settings.fetch(args)).to be_a SendGrid::Response
|
|
14
|
+
expect(user_settings.fetch(**args)).to be_a SendGrid::Response
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
describe '.update' do
|
|
19
19
|
it 'calls patch on sendgrid_client' do
|
|
20
20
|
args = { sendgrid_client: sendgrid_client, name: setting_name, request_body: setting_params }
|
|
21
|
-
expect(user_settings.update(args)).to be_a SendGrid::Response
|
|
21
|
+
expect(user_settings.update(**args)).to be_a SendGrid::Response
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -33,8 +33,9 @@ class TestAPI < MiniTest::Test
|
|
|
33
33
|
assert_equal(test_headers, sg.request_headers)
|
|
34
34
|
assert_equal('v3', sg.version)
|
|
35
35
|
assert_equal(subuser, sg.impersonate_subuser)
|
|
36
|
-
assert_equal('6.
|
|
36
|
+
assert_equal('6.5.2', SendGrid::VERSION)
|
|
37
37
|
assert_instance_of(SendGrid::Client, sg.client)
|
|
38
|
+
assert_equal({}, sg.http_options)
|
|
38
39
|
end
|
|
39
40
|
|
|
40
41
|
def test_init_when_impersonate_subuser_is_not_given
|
|
@@ -42,6 +43,23 @@ class TestAPI < MiniTest::Test
|
|
|
42
43
|
refute_includes(sg.request_headers, 'On-Behalf-Of')
|
|
43
44
|
end
|
|
44
45
|
|
|
46
|
+
def test_init_when_http_options_is_given
|
|
47
|
+
params = JSON.parse('{"subuser": "test_string", "ip": "test_string", "limit": 1, "exclude_whitelabels": "true", "offset": 1}')
|
|
48
|
+
headers = JSON.parse('{"X-Mock": 200}')
|
|
49
|
+
http_options = {
|
|
50
|
+
open_timeout: 40,
|
|
51
|
+
read_timeout: 40
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
sg = SendGrid::API.new(api_key: 'SENDGRID_API_KEY', version: 'v3', http_options: http_options)
|
|
55
|
+
client = sg.client.ips
|
|
56
|
+
response = client.get(query_params: params, request_headers: headers)
|
|
57
|
+
|
|
58
|
+
assert_equal(40, client.http.open_timeout)
|
|
59
|
+
assert_equal(40, client.http.read_timeout)
|
|
60
|
+
assert_equal('200', response.status_code)
|
|
61
|
+
end
|
|
62
|
+
|
|
45
63
|
def test_access_settings_activity_get
|
|
46
64
|
params = JSON.parse('{"limit": 1}')
|
|
47
65
|
headers = JSON.parse('{"X-Mock": 200}')
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sendgrid-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 6.
|
|
4
|
+
version: 6.5.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Elmer Thomas
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2021-
|
|
13
|
+
date: 2021-10-18 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: ruby_http_client
|
|
@@ -167,6 +167,7 @@ extra_rdoc_files: []
|
|
|
167
167
|
files:
|
|
168
168
|
- ".codeclimate.yml"
|
|
169
169
|
- ".env_sample"
|
|
170
|
+
- ".github/ISSUE_TEMPLATE/config.yml"
|
|
170
171
|
- ".gitignore"
|
|
171
172
|
- ".rubocop.yml"
|
|
172
173
|
- ".rubocop_todo.yml"
|