升级Ruby和Rails后启动服务器出现Psych::AliasesNotEnabled错误求助
Ruby 3.0.0 + Rails 7.1.2 启动服务器时 Psych::AliasesNotEnabled 错误解决方法
问题场景
原应用运行在Ruby 1.9.2 + Rails 3.0.3环境,升级至Ruby 3.0.0、Rails 7.1.2后,执行rails server命令时服务器直接退出,抛出以下错误:
错误信息
/usr/local/rvm/gems/ruby-3.0.0/gems/psych-5.1.1.1/lib/psych/visitors/to_ruby.rb:432:in
visit_Psych_Nodes_Alias': Alias parsing was not enabled. To enable it, passaliases: truetoPsych::loadorPsych::safe_load`. (Psych::AliasesNotEnabled)
问题定位
错误触发自配置加载代码:
APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]
Ruby 3.x版本配套的Psych(YAML解析库)默认禁用了YAML别名解析功能,而Ruby 1.9.2时代的解析器默认允许该功能,版本升级后的行为差异直接导致了此报错。
解决方案
将原配置加载代码替换为Rails官方推荐的config_for方法:
APP_CONFIG = Rails.application.config_for(:config)
config_for会遵循Rails的安全规范处理YAML文件解析,自动适配新版本Psych的配置要求,彻底解决别名解析相关的报错问题。
内容的提问来源于stack exchange,提问作者DevAct
相关产品推荐
相关产品推荐

