Defect #35435
closedPsych 4: aliases in database.yml cause Psych::BadAlias exception
0%
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
Updated by Go MAEDA over 3 years ago
- Description updated (diff)
- Target version set to 4.1.4
Confirmed the issue by adding the following line to Gemfile.local.
gem 'psych', '~> 4.0.0'
Setting the target version to 4.1.4.
Updated by Go MAEDA over 3 years ago
- Tracker changed from Patch to Defect
- Subject changed from Psych 4 support to Psych 4: aliases in database.yml cause Psych::BadAlias exception
- Status changed from New to Confirmed
Updated by Go MAEDA over 3 years ago
- Status changed from Confirmed to Resolved
- Assignee set to Go MAEDA
- Resolution set to Fixed
Committed the fix. Thank you.
Updated by Alexander Meindl over 3 years ago
Hi,
plugin settings do not work with psych >= 4, too.
[6] Setting.plugin_redmine_messenger Setting Load (0.5ms) SELECT `settings`.* FROM `settings` WHERE `settings`.`name` = 'plugin_redmine_messenger' ORDER BY `settings`.`id` DESC LIMIT 1 Psych::DisallowedClass: Tried to load unspecified class: ActiveSupport::HashWithIndifferentAccess from /Users/alex/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/psych-4.0.1/lib/psych/class_loader.rb:99:in `find'
The problem is caused by https://www.redmine.org/projects/redmine/repository/entry/trunk/app/models/setting.rb#L109
Tested with multiple plugins, Redmine 4.2.1 and Ruby 2.7.3 with
gem 'psych', '~> 4.0.0'
Some plugins are already using psych >= 4, see https://github.com/AlphaNodes/additionals/issues/107.
Updated by Go MAEDA about 3 years ago
- Status changed from Resolved to Closed
Alexander Meindl wrote:
Hi,
plugin settings do not work with psych >= 4, too.
[...]
The problem is caused by https://www.redmine.org/projects/redmine/repository/entry/trunk/app/models/setting.rb#L109
Tested with multiple plugins, Redmine 4.2.1 and Ruby 2.7.3 with
[...]
Some plugins are already using psych >= 4, see https://github.com/AlphaNodes/additionals/issues/107.
Thank you for reporting the issue. I have opened #36226.
Updated by Go MAEDA about 3 years ago
- Related to Feature #36205: Ruby 3.1 support added
Updated by Go MAEDA almost 3 years ago
- Target version changed from 5.0.0 to 4.1.6