summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2018-12-14 22:45:14 +0800
committerRémy Coutable <remy@rymai.me>2018-12-19 11:24:54 +0100
commit0ff27ce05960598e5a1c0a1115180db0feeb689a (patch)
tree2ae5e499696fee4f080ad62b7f50b302772dbfed
parentcc5099c5ce79a7c062e2197b47f5f8a81bb48292 (diff)
downloadgitlab-ce-0ff27ce05960598e5a1c0a1115180db0feeb689a.tar.gz
Method `create_from_defaults` will never give nil
-rw-r--r--app/models/application_setting.rb2
-rw-r--r--lib/gitlab/current_settings.rb3
-rw-r--r--spec/lib/gitlab/current_settings_spec.rb19
3 files changed, 9 insertions, 15 deletions
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
index 54139f61a16..86ffd198ab1 100644
--- a/app/models/application_setting.rb
+++ b/app/models/application_setting.rb
@@ -311,7 +311,7 @@ class ApplicationSetting < ActiveRecord::Base
end
def self.create_from_defaults
- create(defaults)
+ build_from_defaults.tap(&:save)
end
def self.human_attribute_name(attr, _options = {})
diff --git a/lib/gitlab/current_settings.rb b/lib/gitlab/current_settings.rb
index 570bfb80fba..552aad83dd4 100644
--- a/lib/gitlab/current_settings.rb
+++ b/lib/gitlab/current_settings.rb
@@ -51,8 +51,7 @@ module Gitlab
elsif current_settings.present?
current_settings
else
- ::ApplicationSetting.create_from_defaults ||
- in_memory_application_settings
+ ::ApplicationSetting.create_from_defaults
end
end
diff --git a/spec/lib/gitlab/current_settings_spec.rb b/spec/lib/gitlab/current_settings_spec.rb
index 06772fffce7..add8867d243 100644
--- a/spec/lib/gitlab/current_settings_spec.rb
+++ b/spec/lib/gitlab/current_settings_spec.rb
@@ -54,7 +54,7 @@ describe Gitlab::CurrentSettings do
expect(ApplicationSetting).not_to receive(:current)
end
- it 'returns an in-memory ApplicationSetting object' do
+ it 'returns a FakeApplicationSettings object' do
expect(described_class.current_application_settings).to be_a(Gitlab::FakeApplicationSettings)
end
@@ -157,17 +157,12 @@ describe Gitlab::CurrentSettings do
end
end
- context 'when the application_settings table does not exists' do
- it 'returns an in-memory ApplicationSetting object' do
- expect(ApplicationSetting).to receive(:create_from_defaults).and_raise(ActiveRecord::StatementInvalid)
-
- expect(described_class.current_application_settings).to be_a(Gitlab::FakeApplicationSettings)
- end
- end
-
- context 'when the application_settings table is not fully migrated' do
- it 'returns an in-memory ApplicationSetting object' do
- expect(ApplicationSetting).to receive(:create_from_defaults).and_raise(ActiveRecord::UnknownAttributeError)
+ context 'when the application_settings table does not exist' do
+ it 'returns a FakeApplicationSettings object' do
+ expect(Gitlab::Database)
+ .to receive(:cached_table_exists?)
+ .with('application_settings')
+ .and_return(false)
expect(described_class.current_application_settings).to be_a(Gitlab::FakeApplicationSettings)
end