Skip to content

If migrations are pending, make CurrentSettings use existing values and populate missing columns with defaults

Stan Hu requested to merge sh-refactor-current-settings into master

master was failing because ApplicationSetting.create_from_defaults attempted to write to a column that did not exist in the database. This occurred in a rake db:migrate task, which was unable to perform the migration that would have added the missing column in the first place.

In 9.3 RC2, we also had a bug where password sign-ins were disabled because there were many pending migrations. The problem occurred because fake_application_settings was being returned with an OpenStruct that did not include the predicate method signup_enabled?. As a result, the value would erroneously return nil instead of true. This commit uses the values of the defaults to mimic this behavior.

This commit also refactors some of the logic to be clearer.

Partially addresses #33810 (moved)

Edited by Stan Hu

Merge request reports