• Stan Hu's avatar
    If migrations are pending, make CurrentSettings use existing values and... · 575dced5
    Stan Hu authored
    If migrations are pending, make CurrentSettings use existing values and populate missing columns with defaults
    
    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.
    575dced5