Project

General

Profile

Actions

Defect #35435

closed

Psych 4: aliases in database.yml cause Psych::BadAlias exception

Added by Pavel Rosický almost 3 years ago. Updated about 2 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Gems support
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:
Fixed
Affected version:

Description

see for details
https://github.com/ruby/psych/pull/487
https://github.com/rails/rails/commit/1e56b1d1152e8ab74203db30625116844614cc78

patch

diff --git a/Gemfile b/Gemfile
index b83cd2215..8f6bbe946 100644
--- a/Gemfile
+++ b/Gemfile
@@ -52,7 +52,8 @@ require 'erb'
 require 'yaml'
 database_file = File.join(File.dirname(__FILE__), "config/database.yml")
 if File.exist?(database_file)
-  database_config = YAML::load(ERB.new(IO.read(database_file)).result)
+  yaml_config = ERB.new(IO.read(database_file)).result
+  database_config = YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(yaml_config) : YAML.load(yaml_config)
   adapters = database_config.values.map {|c| c['adapter']}.compact.uniq
   if adapters.any?
     adapters.each do |adapter|

without this change, Psych 4 will break aliases in config/database.yml

production: &alias
  adapter: mysql2
  database: xxx

development: *alias

error

Cannot load database configuration: (Psych::BadAlias)
Unknown alias: alias


Related issues

Related to Redmine - Feature #36205: Ruby 3.1 supportClosedGo MAEDA

Actions
Actions

Also available in: Atom PDF