record_store 6.5.4 → 6.5.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 16f9a10f5929ea735a99f35ec95365468ae74f1ca96b895ab66f77b22092cef2
4
- data.tar.gz: cfa31577b7ed26208894fb03f2635ba1111d45bccd95a187553b4ce9750f9c98
3
+ metadata.gz: d08c3213971934f91db50a1f602c45e7110ec2f73c71bde5b02dcff1fd2e0731
4
+ data.tar.gz: 478970b2e7adf68a312544f97c0effd775398517340344d2eb6e0fdfc23c3cd9
5
5
  SHA512:
6
- metadata.gz: d27fedbd2fe747f57fb595660fbd2f57aba841449db6d5c2ce571aa30f41c6a8cb8453960f336be1535e0b70fee532e317a89c320688eb55506ba247de19cf4a
7
- data.tar.gz: 0dbb66a9617e4b7cb9a79f0e531e63984c63acf9d461cef32778317545d839ae83836a0ab02d36226e43a3ffaa865847c0c8a6e91f2af68a3d18c1346faed053
6
+ metadata.gz: c67e750aedfdf0d8d9e5dc5bbb8ca01c2b5a0cd68a880f67fdc8f2094805b3ee8b231303b2f65c6f1012873f15a23a3383de786b7c44dc62cbf7eca2709058bb
7
+ data.tar.gz: 2d774dae370703a8807d7b91e4dbe50a1186ba920d7df2b8a3bf3276e930fb1f4342a050bdfcc84f8fdfae0231692064e969911452c0631f25809cd2da9aaca5
data/.rubocop.yml CHANGED
@@ -1,19 +1,40 @@
1
- inherit_from:
2
- - https://shopify.github.io/ruby-style-guide/rubocop.yml
1
+ inherit_gem:
2
+ rubocop-shopify: rubocop.yml
3
3
 
4
4
  AllCops:
5
- TargetRubyVersion: 2.4
5
+ TargetRubyVersion: 2.6.4
6
6
  Exclude:
7
7
  - vendor/**/*
8
8
  UseCache: true
9
9
  CacheRootDirectory: tmp/rubocop
10
10
 
11
+ Naming/InclusiveLanguage:
12
+ Enabled: false
13
+
14
+ Style/ClassAndModuleChildren:
15
+ Enabled: false
16
+
11
17
  Style/FrozenStringLiteralComment:
12
18
  Enabled: false
13
19
 
20
+ Style/QuotedSymbols:
21
+ Enabled: false
22
+
14
23
  Style/MethodCallWithArgsParentheses:
15
24
  Include:
16
25
  - '**/*.rb'
17
26
 
18
- Style/ClassAndModuleChildren:
19
- Enabled: false
27
+ Style/StringLiterals:
28
+ Enabled: false
29
+
30
+ Style/StringLiteralsInInterpolation:
31
+ Enabled: false
32
+
33
+ Style/TrailingCommaInArrayLiteral:
34
+ Enabled: false
35
+
36
+ Style/TrailingCommaInHashLiteral:
37
+ Enabled: false
38
+
39
+ Style/WordArray:
40
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 6.5.5
4
+ - Include DNSimple validation error details in exceptions
5
+
3
6
  ## 6.5.4
4
7
  - Updates config path structure for build pipeline
5
8
 
@@ -193,14 +193,12 @@ module RecordStore
193
193
 
194
194
  desc 'secrets', 'Decrypts DynECT credentials'
195
195
  def secrets
196
- environment = begin
197
- if ENV['PRODUCTION']
198
- 'production'
199
- elsif ENV['CI']
200
- 'ci'
201
- else
202
- 'dev'
203
- end
196
+ environment = if ENV['PRODUCTION']
197
+ 'production'
198
+ elsif ENV['CI']
199
+ 'ci'
200
+ else
201
+ 'dev'
204
202
  end
205
203
 
206
204
  secrets = %x(ejson decrypt #{RecordStore.secrets_path.sub(/\.json\z/, ".#{environment}.ejson")})
@@ -0,0 +1,20 @@
1
+ module Dnsimple
2
+ class RequestError < Error
3
+ private
4
+
5
+ alias_method :original_message_from, :message_from
6
+
7
+ def message_from(http_response)
8
+ message = original_message_from(http_response)
9
+ return unless json_response?(http_response)
10
+
11
+ base_error = http_response.parsed_response.dig("errors", "base")&.join(", ")
12
+ message += ": #{base_error}" unless base_error.nil?
13
+ message
14
+ end
15
+
16
+ def json_response?(http_response)
17
+ http_response.headers["Content-Type"]&.start_with?("application/json")
18
+ end
19
+ end
20
+ end
@@ -1,5 +1,6 @@
1
1
  require 'dnsimple'
2
2
  require_relative 'dnsimple/patch_api_header'
3
+ require_relative 'dnsimple/patch_request_error_to_include_errors'
3
4
 
4
5
  module RecordStore
5
6
  class Provider::DNSimple < Provider
@@ -20,12 +21,10 @@ module RecordStore
20
21
  def retrieve_current_records(zone:, stdout: $stdout)
21
22
  retry_on_connection_errors do
22
23
  session.zones.all_records(account_id, zone).data.map do |record|
23
- begin
24
- build_from_api(record, zone)
25
- rescue StandardError
26
- stdout.puts "Cannot build record: #{record}"
27
- raise
28
- end
24
+ build_from_api(record, zone)
25
+ rescue StandardError
26
+ stdout.puts "Cannot build record: #{record}"
27
+ raise
29
28
  end.compact
30
29
  end
31
30
  end
@@ -36,11 +36,9 @@ module RecordStore
36
36
  def retrieve_current_records(zone:, stdout: $stdout)
37
37
  session.get_all_records(zone).body.fetch('data').flat_map do |_type, records|
38
38
  records.map do |record_body|
39
- begin
40
- build_from_api(record_body)
41
- rescue StandardError
42
- stdout.puts "Cannot build record: #{record_body}"
43
- end
39
+ build_from_api(record_body)
40
+ rescue StandardError
41
+ stdout.puts "Cannot build record: #{record_body}"
44
42
  end
45
43
  end.compact
46
44
  end
@@ -22,13 +22,11 @@ module RecordStore
22
22
 
23
23
  # Unroll each record set into multiple records
24
24
  record_set.data.map do |record|
25
- begin
26
- record_set_member = record_set.dup
27
- record_set_member.data = [record]
28
- build_from_api(record_set_member)
29
- rescue StandardError
30
- stdout.puts "Cannot build record: #{record}"
31
- end
25
+ record_set_member = record_set.dup
26
+ record_set_member.data = [record]
27
+ build_from_api(record_set_member)
28
+ rescue StandardError
29
+ stdout.puts "Cannot build record: #{record}"
32
30
  end
33
31
  end
34
32
 
@@ -44,12 +42,10 @@ module RecordStore
44
42
  private
45
43
 
46
44
  def session
47
- @dns ||= begin
48
- Google::Cloud::Dns.new(
49
- project_id: secrets.fetch('project_id'),
50
- credentials: Google::Cloud::Dns::Credentials.new(secrets),
51
- )
52
- end
45
+ @dns ||= Google::Cloud::Dns.new(
46
+ project_id: secrets.fetch('project_id'),
47
+ credentials: Google::Cloud::Dns::Credentials.new(secrets),
48
+ )
53
49
  end
54
50
 
55
51
  def secrets
@@ -50,7 +50,7 @@ module RecordStore
50
50
  # Downloads all the records from the provider.
51
51
  #
52
52
  # Returns: an array of `Record` for each record in the provider's zone
53
- def retrieve_current_records(zone:, stdout: $stdout) # rubocop:disable Lint/UnusedMethodArgument
53
+ def retrieve_current_records(zone:, stdout: $stdout)
54
54
  records_for_zone(zone)
55
55
  .flat_map { |short_record| build_from_api(short_record) }
56
56
  .compact
@@ -3,6 +3,7 @@ require 'resolv'
3
3
  module RecordStore
4
4
  class Provider
5
5
  class Error < StandardError; end
6
+
6
7
  class UnparseableBodyError < Error; end
7
8
 
8
9
  class << self
@@ -152,24 +153,22 @@ module RecordStore
152
153
  )
153
154
 
154
155
  loop do
155
- begin
156
- return yield
157
- rescue UnparseableBodyError
158
- raise if max_retries <= 0
159
- max_retries -= 1
160
-
161
- waiter.wait(message: 'Waiting to retry after receiving an unparseable response')
162
- rescue Net::OpenTimeout, Errno::ETIMEDOUT
163
- raise if max_timeouts <= 0
164
- max_timeouts -= 1
165
-
166
- $stderr.puts('Retrying after a connection timeout')
167
- rescue Errno::ECONNRESET
168
- raise if max_conn_resets <= 0
169
- max_conn_resets -= 1
170
-
171
- waiter.wait
172
- end
156
+ return yield
157
+ rescue UnparseableBodyError
158
+ raise if max_retries <= 0
159
+ max_retries -= 1
160
+
161
+ waiter.wait(message: 'Waiting to retry after receiving an unparseable response')
162
+ rescue Net::OpenTimeout, Errno::ETIMEDOUT
163
+ raise if max_timeouts <= 0
164
+ max_timeouts -= 1
165
+
166
+ $stderr.puts('Retrying after a connection timeout')
167
+ rescue Errno::ECONNRESET
168
+ raise if max_conn_resets <= 0
169
+ max_conn_resets -= 1
170
+
171
+ waiter.wait
173
172
  end
174
173
  end
175
174
  end
@@ -1,3 +1,3 @@
1
1
  module RecordStore
2
- VERSION = '6.5.4'.freeze
2
+ VERSION = '6.5.5'.freeze
3
3
  end
@@ -32,8 +32,8 @@ module RecordStore
32
32
  filters_for_records_to_exclude = template_file_yaml[:except_record] || []
33
33
 
34
34
  new(template: ERB.new(template_file),
35
- filters_for_records_to_template: filters_for_records_to_template,
36
- filters_for_records_to_exclude: filters_for_records_to_exclude)
35
+ filters_for_records_to_template: filters_for_records_to_template,
36
+ filters_for_records_to_exclude: filters_for_records_to_exclude)
37
37
  end
38
38
 
39
39
  private
@@ -31,7 +31,7 @@ module RecordStore
31
31
  end
32
32
 
33
33
  def write(name, config:, records:, format: :file)
34
- raise ArgumentError, "format must be :directory or :file" unless %i(file directory).include?(format)
34
+ raise ArgumentError, "format must be :directory or :file" unless [:file, :directory].include?(format)
35
35
  name = name.chomp('.')
36
36
  zone_file = "#{RecordStore.zones_path}/#{name}.yml"
37
37
  zone = { name => { config: config.to_hash } }
@@ -53,7 +53,7 @@ module RecordStore
53
53
  (ENV['RECORD_STORE_MAX_THREADS'] || DEFAULT_MAX_PARALLEL_THREADS).to_i
54
54
  end
55
55
 
56
- def modified(verbose: false) # rubocop:disable Lint/UnusedMethodArgument
56
+ def modified(verbose: false)
57
57
  modified_zones = []
58
58
  mutex = Mutex.new
59
59
  zones = all
@@ -85,10 +85,8 @@ module RecordStore
85
85
  end
86
86
 
87
87
  def build_changesets(all: false)
88
- @changesets ||= begin
89
- providers.map do |provider|
90
- Changeset.build_from(provider: provider, zone: self, all: all)
91
- end
88
+ @changesets ||= providers.map do |provider|
89
+ Changeset.build_from(provider: provider, zone: self, all: all)
92
90
  end
93
91
  end
94
92
 
data/lib/record_store.rb CHANGED
@@ -53,7 +53,7 @@ module RecordStore
53
53
  def zones_path
54
54
  @zones_path ||= Pathname.new(
55
55
  File.expand_path(config.fetch('zones_path'),
56
- File.dirname(config_path)),
56
+ File.dirname(config_path)),
57
57
  ).realpath.to_s
58
58
  end
59
59
 
@@ -64,7 +64,7 @@ module RecordStore
64
64
  def implicit_records_templates_path
65
65
  @implicit_records_templates_path ||= Pathname.new(
66
66
  File.expand_path(config.fetch('implicit_records_templates_path'),
67
- File.dirname(config_path)),
67
+ File.dirname(config_path)),
68
68
  ).realpath.to_s
69
69
  end
70
70
 
data/record_store.gemspec CHANGED
@@ -48,6 +48,7 @@ Gem::Specification.new do |spec|
48
48
  spec.add_development_dependency 'vcr'
49
49
  spec.add_development_dependency 'pry'
50
50
  spec.add_development_dependency 'webmock'
51
- spec.add_development_dependency 'rubocop', '~> 1.0.0'
51
+ spec.add_development_dependency 'rubocop', '~> 1.18.0'
52
+ spec.add_development_dependency 'rubocop-shopify', '~> 2.2.0'
52
53
  spec.add_development_dependency 'minitest-focus'
53
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: record_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.5.4
4
+ version: 6.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Willem van Bergen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-09-23 00:00:00.000000000 Z
12
+ date: 2021-11-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -303,14 +303,28 @@ dependencies:
303
303
  requirements:
304
304
  - - "~>"
305
305
  - !ruby/object:Gem::Version
306
- version: 1.0.0
306
+ version: 1.18.0
307
307
  type: :development
308
308
  prerelease: false
309
309
  version_requirements: !ruby/object:Gem::Requirement
310
310
  requirements:
311
311
  - - "~>"
312
312
  - !ruby/object:Gem::Version
313
- version: 1.0.0
313
+ version: 1.18.0
314
+ - !ruby/object:Gem::Dependency
315
+ name: rubocop-shopify
316
+ requirement: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - "~>"
319
+ - !ruby/object:Gem::Version
320
+ version: 2.2.0
321
+ type: :development
322
+ prerelease: false
323
+ version_requirements: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - "~>"
326
+ - !ruby/object:Gem::Version
327
+ version: 2.2.0
314
328
  - !ruby/object:Gem::Dependency
315
329
  name: minitest-focus
316
330
  requirement: !ruby/object:Gem::Requirement
@@ -357,6 +371,7 @@ files:
357
371
  - lib/record_store/provider.rb
358
372
  - lib/record_store/provider/dnsimple.rb
359
373
  - lib/record_store/provider/dnsimple/patch_api_header.rb
374
+ - lib/record_store/provider/dnsimple/patch_request_error_to_include_errors.rb
360
375
  - lib/record_store/provider/dynect.rb
361
376
  - lib/record_store/provider/google_cloud_dns.rb
362
377
  - lib/record_store/provider/ns1.rb