Confusing error: Unknown alias: foo (Psych::BadAlias)
eregon opened this issue · 2 comments
eregon commented
I tried running some script which parses some YAML file using aliases, and due to a recent psych being installed it fails like:
$ ruby -ryaml -e 'p YAML.load_file "tool/docker-configs.yaml"'
/home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:432:in `visit_Psych_Nodes_Alias': Unknown alias: rpm (Psych::BadAlias)
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/visitor.rb:30:in `visit'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/visitor.rb:6:in `accept'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:35:in `accept'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:347:in `block in revive_hash'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:345:in `each'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:345:in `each_slice'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:345:in `revive_hash'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:169:in `visit_Psych_Nodes_Mapping'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/visitor.rb:30:in `visit'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/visitor.rb:6:in `accept'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:35:in `accept'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:347:in `block in revive_hash'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:345:in `each'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:345:in `each_slice'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:345:in `revive_hash'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:169:in `visit_Psych_Nodes_Mapping'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/visitor.rb:30:in `visit'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/visitor.rb:6:in `accept'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:35:in `accept'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:320:in `visit_Psych_Nodes_Document'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/visitor.rb:30:in `visit'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/visitor.rb:6:in `accept'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych/visitors/to_ruby.rb:35:in `accept'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych.rb:334:in `safe_load'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych.rb:369:in `load'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych.rb:671:in `block in load_file'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych.rb:670:in `open'
from /home/eregon/.rubies/ruby-3.0.3/lib/ruby/gems/3.0.0/gems/psych-4.0.6/lib/psych.rb:670:in `load_file'
from -e:1:in `<main>'
So it looks like recent Psych default to safe_load
(kinda known).
But the error message is really confusing.
I think the error should say something like:
aliases are disabled by default in YAML safe parsing, pass
aliases: true
if you want to allow YAML aliases
scarroll32 commented
tbates-redarc commented
This is fixed in #567 which was released in v5.0.0.