Skip loading application settings from the database when migrations are pending

Various Rails initializers (metrics, sentry, etc) are run before migrations,
which can lead to a mismatch between app/models/application_settings.rb and
schema.
This commit is contained in:
Nick Thomas 2017-06-01 10:17:56 +01:00
parent dab2662194
commit 23db8409aa
3 changed files with 5 additions and 4 deletions

View file

@ -19,7 +19,7 @@ module Gitlab
settings = ::ApplicationSetting.last
end
settings ||= ::ApplicationSetting.create_from_defaults unless ActiveRecord::Migrator.needs_migration?
settings ||= ::ApplicationSetting.create_from_defaults
end
settings || in_memory_application_settings
@ -46,7 +46,8 @@ module Gitlab
active_db_connection = ActiveRecord::Base.connection.active? rescue false
active_db_connection &&
ActiveRecord::Base.connection.table_exists?('application_settings')
ActiveRecord::Base.connection.table_exists?('application_settings') &&
!ActiveRecord::Migrator.needs_migration?
rescue ActiveRecord::NoDatabaseError
false
end

View file

@ -126,7 +126,7 @@ describe Projects::MergeRequestsController do
recorded = ActiveRecord::QueryRecorder.new { go(format: :json) }
expect(recorded.count).to be_within(5).of(50)
expect(recorded.count).to be_within(5).of(59)
expect(recorded.cached_count).to eq(0)
end
end

View file

@ -113,7 +113,7 @@ describe PipelineSerializer do
it "verifies number of queries" do
recorded = ActiveRecord::QueryRecorder.new { subject }
expect(recorded.count).to be_within(1).of(58)
expect(recorded.count).to be_within(1).of(60)
expect(recorded.cached_count).to eq(0)
end