class ActiveSupport::EncryptedConfiguration
# => KeyError
my_config.foo!
# => KeyError
my_config.fetch(:foo)
# => 456
my_config.some_namespace.another_secret
# => 456
my_config.dig(:some_namespace, :another_secret)
# => 123
my_config.some_secret
# => 123
my_config[:some_secret]
my_config.read # => “some_secret: 123nsome_namespace:n another_secret: 456”
my_config = ActiveSupport::EncryptedConfiguration.new(…)
dynamic accessor methods, similar to OrderedOptions.
Values can be accessed via Hash methods, such as fetch and dig, or via
as encrypted YAML.
Provides convenience methods on top of EncryptedFile to access values stored
= Encrypted Configuration
def config
# => { some_secret: 123, some_namespace: { another_secret: 789 } }
my_config.config
my_config.read # => "some_secret: 123\nsome_namespace:\n another_secret: 456"
my_config = ActiveSupport::EncryptedConfiguration.new(...)
Returns the decrypted content as a Hash with symbolized keys.
def config @config ||= deserialize(read).deep_symbolize_keys end
def deep_transform(hash)
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
def deserialize(content)
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
def initialize(config_path:, key_path:, env_key:, raise_if_missing_key:)
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
def inspect # :nodoc:
def inspect # :nodoc: "#<#{self.class.name}:#{'%#016x' % (object_id << 1)}>" end
def options
def options @options ||= deep_transform(config) end
def read
def read super rescue ActiveSupport::EncryptedFile::MissingContentError # Allow a config to be started without a file present "" end
def validate! # :nodoc:
def validate! # :nodoc: deserialize(read) end