class ActiveSupport::EncryptedConfiguration
Encrypted Configuration¶ ↑
Provides convenience methods on top of EncryptedFile to access values stored as encrypted YAML.
Values can be accessed via Hash methods, such as fetch and dig, or via dynamic accessor methods, similar to OrderedOptions.
my_config = ActiveSupport::EncryptedConfiguration.new(...) my_config.read # => "some_secret: 123\nsome_namespace:\n another_secret: 456" my_config[:some_secret] # => 123 my_config.some_secret # => 123 my_config.dig(:some_namespace, :another_secret) # => 456 my_config.some_namespace.another_secret # => 456 my_config.fetch(:foo) # => KeyError my_config.foo! # => KeyError
Public Class Methods
new(config_path:, key_path:, env_key:, raise_if_missing_key:)
click to toggle source
Calls superclass method
# File lib/active_support/encrypted_configuration.rb, line 54 def initialize(config_path:, key_path:, env_key:, raise_if_missing_key:) super content_path: config_path, key_path: key_path, env_key: env_key, raise_if_missing_key: raise_if_missing_key @config = nil @options = nil end
Public Instance Methods
config()
click to toggle source
Returns the decrypted content as a Hash with symbolized keys.
my_config = ActiveSupport::EncryptedConfiguration.new(...)
my_config.read # => "some_secret: 123\nsome_namespace:\n another_secret: 456"
my_config.config
# => { some_secret: 123, some_namespace: { another_secret: 789 } }
# File lib/active_support/encrypted_configuration.rb, line 85 def config @config ||= deep_symbolize_keys(deserialize(read)) end
read()
click to toggle source
Reads the file and returns the decrypted content. See EncryptedFile#read.
Calls superclass method
# File lib/active_support/encrypted_configuration.rb, line 62 def read super rescue ActiveSupport::EncryptedFile::MissingContentError # Allow a config to be started without a file present "" end
Private Instance Methods
deep_symbolize_keys(hash)
click to toggle source
# File lib/active_support/encrypted_configuration.rb, line 94 def deep_symbolize_keys(hash) hash.deep_transform_keys do |key| key.to_sym rescue NoMethodError raise InvalidKeyError.new(content_path, key) end end
deep_transform(hash)
click to toggle source
# File lib/active_support/encrypted_configuration.rb, line 102 def deep_transform(hash) return hash unless hash.is_a?(Hash) h = ActiveSupport::OrderedOptions.new hash.each do |k, v| h[k] = deep_transform(v) end h end
deserialize(content)
click to toggle source
# File lib/active_support/encrypted_configuration.rb, line 116 def deserialize(content) config = YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(content, filename: content_path) : YAML.load(content, filename: content_path) config.presence || {} rescue Psych::SyntaxError raise InvalidContentError.new(content_path) end
options()
click to toggle source
# File lib/active_support/encrypted_configuration.rb, line 112 def options @options ||= deep_transform(config) end