Skip to content

Commit 89f86e7

Browse files
committed
(FACT-3102) Use non-deprecated YAML safe loading
This PR suppresses the following `Psych.safe_load` args warn when using Psych 3.1.0 (Ruby 2.6+). Passing permitted_classes with the 2nd argument of Psych.safe_load is deprecated. Use keyword argument like Psych.safe_load(yaml, permitted_classes: ...) instead. This is needed because in Psych 4 (included in Ruby 3.1) it is no longer allowed to use the non-keyword style.
1 parent b29fe99 commit 89f86e7

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

.github/workflows/unit_tests.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ jobs:
2121
- '2.3'
2222
- '2.7'
2323
- '3.0'
24+
- '3.1'
2425
- 'jruby'
2526
runs-on: ubuntu-18.04
2627
steps:

lib/facter/custom_facts/util/parser.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ def parse_results
7070
def parse_executable_output(output)
7171
res = nil
7272
begin
73-
res = YAML.safe_load(output, [Symbol, Time])
73+
res = if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0') # Ruby 2.6+
74+
YAML.safe_load(output, permitted_classes: [Symbol, Time])
75+
else
76+
YAML.safe_load(output, [Symbol, Time])
77+
end
7478
rescue StandardError => e
7579
Facter.debug("Could not parse executable fact output as YAML or JSON (#{e.message})")
7680
end
@@ -114,7 +118,11 @@ def parse_results
114118
# Add quotes to Yaml time
115119
cont = content.gsub(TIME, '"\1"')
116120

117-
YAML.safe_load(cont, [Date])
121+
if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0') # Ruby 2.6+
122+
YAML.safe_load(cont, permitted_classes: [Date])
123+
else
124+
YAML.safe_load(cont, [Date])
125+
end
118126
end
119127
end
120128

0 commit comments

Comments
 (0)