ecfr 1.1.7 → 1.1.8

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: 13cc40dfeeb370c7a81be66f37bdf9f23cf4dfbb936465ce4c12b1ab88094deb
4
- data.tar.gz: 6a80785bbd1e428f93f841401e678c1776f9b344a33e554738759937079eca06
3
+ metadata.gz: 4b197c379472b132c53aa95124c94cd05818b29394a91e60f1e4207e8d4df7bb
4
+ data.tar.gz: fa0e021f1aea9f478e6cde802c11a259002a6d08fd5040f824ba9fbd503f4e53
5
5
  SHA512:
6
- metadata.gz: 11198b0d371f4c2a49ed939af2db6f7b781809d107b1e17ef586b03676d21157f739b92e4ae681fe70112580650a7476b39cbdb0ea6e06c51067cc79943510dd
7
- data.tar.gz: 3dddd1f095d6ea3015e8d4f9dfbb0d1fe9ab29cfd426274c6d646fa86bc02217c45545d2105682cf0e88ee33779b22f344c895feab0c55e2be0d036c9873332a
6
+ metadata.gz: fa28a2683c99f360db6cdc07b57508ebb0ea49500d934709c56f3f0f9b4c5a17c8512e8fe3879de1ac94978305bf61998c2e1ad09caa0a58a41c47a70b4276c3
7
+ data.tar.gz: a4be700d5c585eb262010206bfc606397da99a521a98c6b8ddaded08679c82ed71c857ab76331a956424025d0872f895aa3fbb3571b8c515a0f76f31d9a792f5
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [1.1.8] - 2026-07-13
4
+ ### Fixes
5
+ - ClientConfiguration#dig_setting no longer raises when a setting key is absent
6
+ from a settings object that fails on missing keys (e.g. config gem's
7
+ Config::Options with fail_on_missing). Missing keys now return nil, so
8
+ consuming apps can omit blank service/profile settings they don't want to override.
9
+
3
10
  ## [1.1.7] - 2026-06-29
4
11
  ### Additions
5
12
  - Add authority endpoint
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ecfr (1.1.6)
4
+ ecfr (1.1.8)
5
5
  activemodel
6
6
  activesupport
7
7
  faraday (~> 2.0)
data/ecfr.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
 
19
19
  spec.metadata["homepage_uri"] = spec.homepage
20
20
  spec.metadata["source_code_uri"] = "https://github.com/criticaljuncture/ecfr"
21
- spec.metadata["changelog_uri"] = "https://github.com/criticaljuncture/ecfr"
21
+ spec.metadata["changelog_uri"] = "https://github.com/criticaljuncture/ecfr/blob/main/CHANGELOG.md"
22
22
 
23
23
  # Specify which files should be added to the gem when it is released.
24
24
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -104,13 +104,24 @@ module Ecfr
104
104
  end
105
105
 
106
106
  # Safely walk a settings tree via method or [] access, returning nil if any
107
- # segment is missing rather than raising NoMethodError.
107
+ # segment is missing rather than raising.
108
+ #
109
+ # A missing key must return nil, not raise. Some settings objects (e.g. the
110
+ # config gem's Config::Options with fail_on_missing enabled) raise KeyError
111
+ # on unknown keys via both method and [] access, so we check key presence
112
+ # before indexing rather than relying on [] to return nil.
108
113
  def self.dig_setting(node, *path)
109
114
  path.reduce(node) do |obj, key|
110
115
  break nil if obj.nil?
111
116
 
112
117
  if obj.respond_to?(key)
113
118
  obj.public_send(key)
119
+ elsif obj.respond_to?(:key?)
120
+ break nil unless obj.key?(key)
121
+ obj[key]
122
+ elsif obj.respond_to?(:has_key?)
123
+ break nil unless obj.has_key?(key)
124
+ obj[key]
114
125
  elsif obj.respond_to?(:[])
115
126
  obj[key]
116
127
  end
data/lib/ecfr/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ecfr
4
- VERSION = "1.1.7"
4
+ VERSION = "1.1.8"
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecfr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.7
4
+ version: 1.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peregrinator
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-06-29 00:00:00.000000000 Z
10
+ date: 2026-07-13 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activemodel
@@ -391,7 +391,7 @@ metadata:
391
391
  allowed_push_host: https://rubygems.org
392
392
  homepage_uri: https://github.com/criticaljuncture/ecfr
393
393
  source_code_uri: https://github.com/criticaljuncture/ecfr
394
- changelog_uri: https://github.com/criticaljuncture/ecfr
394
+ changelog_uri: https://github.com/criticaljuncture/ecfr/blob/main/CHANGELOG.md
395
395
  post_install_message: "\n Some features of the eCFR gem support parsing XML responses,
396
396
  response\n caching, and parallel requests.\n\n To use these features you will
397
397
  need to install the appropriate gems\n (nokogiri, request_store, and faraday-typhoeus