diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-26 00:39:47 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-26 00:39:47 +0300 |
commit | c20afb33b244921fd36244be6a02bdb94727f2c4 (patch) | |
tree | 15fba466b1c0041a9cbfb00b34ebba68fce71c17 | |
parent | e7b32a77cc40a14eb0dd6ae1bfc6f036819c66cc (diff) |
Add latest changes from gitlab-org/gitlab@16-0-stable-ee
-rw-r--r-- | lib/gitlab_settings/settings.rb | 10 | ||||
-rw-r--r-- | spec/lib/gitlab_settings/settings_spec.rb | 9 |
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/gitlab_settings/settings.rb b/lib/gitlab_settings/settings.rb index ae2ed4eac05..dc077fdef81 100644 --- a/lib/gitlab_settings/settings.rb +++ b/lib/gitlab_settings/settings.rb @@ -8,6 +8,16 @@ module GitlabSettings raise(ArgumentError, 'config source is required') if source.blank? raise(ArgumentError, 'config section is required') if section.blank? + # Rails will set the default encoding to UTF-8 + # (https://github.com/rails/rails/blob/v6.1.7.2/railties/lib/rails.rb#L21C1-L24), + # but it's possible this class is used before `require 'rails'` is + # called, as in the case of `sidekiq-cluster`. Ensure the + # configuration file is parsed as UTF-8, or + # ActiveSupport::ConfigurationFile.parse will blow up if the + # configuration file contains UTF-8 characters. + Encoding.default_external = Encoding::UTF_8 + Encoding.default_internal = Encoding::UTF_8 + @source = source @section = section @loaded = false diff --git a/spec/lib/gitlab_settings/settings_spec.rb b/spec/lib/gitlab_settings/settings_spec.rb index 161c26dbb9f..4422bea4a63 100644 --- a/spec/lib/gitlab_settings/settings_spec.rb +++ b/spec/lib/gitlab_settings/settings_spec.rb @@ -31,6 +31,15 @@ RSpec.describe GitlabSettings::Settings, :aggregate_failures, feature_category: expect { described_class.new(source, '') } .to raise_error(ArgumentError, 'config section is required') end + + it 'sets encodings' do + expect(Encoding).to receive(:default_external=).with(Encoding::UTF_8).and_call_original + expect(Encoding).to receive(:default_internal=).with(Encoding::UTF_8).and_call_original + + File.write(source, { section1: { config1: { value1: 2 } } }.to_yaml) + + described_class.new(source, 'section1') + end end describe '#reload!' do |