mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Bugfix: ActiveSupport::EncryptedConfiguration reading of comment-only encrypted files (#34014)
* Fix reading comment only encrypted files When a encrypted file contains only comments then reading that files raises an error: NoMethodError: undefined method `deep_symbolize_keys' for false:FalseClass activesupport/lib/active_support/encrypted_configuration.rb:33:in `config' test/encrypted_configuration_test.rb:52:in `block in <class:EncryptedConfigurationTest>' This happens because the previous implementation returned a `{}` fallback for blank YAML strings. But it did not handle YAML strings that are present but still do not contain any _usefull_ YAML - like the file created by `Rails::Generators::EncryptedFileGenerator` which looks like this: # aws: # access_key_id: 123 # secret_access_key: 345 * Fix coding style violation * Add backwardscompatible with Psych versions that were shipped with Ruby <2.5 * Do not rely on railties for Active Support test * Simplify error handling * Improve test naming * Simplify file creation in test
This commit is contained in:
parent
c37247e187
commit
bd10796419
2 changed files with 7 additions and 1 deletions
|
@ -39,7 +39,7 @@ module ActiveSupport
|
||||||
end
|
end
|
||||||
|
|
||||||
def deserialize(config)
|
def deserialize(config)
|
||||||
config.present? ? YAML.load(config, content_path) : {}
|
YAML.load(config).presence || {}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -42,6 +42,12 @@ class EncryptedConfigurationTest < ActiveSupport::TestCase
|
||||||
assert @credentials.something[:good]
|
assert @credentials.something[:good]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "reading comment-only configuration" do
|
||||||
|
@credentials.write("# comment")
|
||||||
|
|
||||||
|
assert_equal @credentials.config, {}
|
||||||
|
end
|
||||||
|
|
||||||
test "change configuration by key file" do
|
test "change configuration by key file" do
|
||||||
@credentials.write({ something: { good: true } }.to_yaml)
|
@credentials.write({ something: { good: true } }.to_yaml)
|
||||||
@credentials.change do |config_file|
|
@credentials.change do |config_file|
|
||||||
|
|
Loading…
Reference in a new issue