class ActiveSupport::EncryptedConfiguration
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
Source
# File lib/active_support/encrypted_configuration.rb, line 36 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 end
Calls superclass method
Public Instance Methods
Source
# File lib/active_support/encrypted_configuration.rb, line 63 def config @config ||= deserialize(read).deep_symbolize_keys end
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 } }
Source
# File lib/active_support/encrypted_configuration.rb, line 42 def read super rescue ActiveSupport::EncryptedFile::MissingContentError # Allow a config to be started without a file present "" end
Reads the file and returns the decrypted content. See EncryptedFile#read.
Calls superclass method
Source
# File lib/active_support/encrypted_configuration.rb, line 49 def write(contents) deserialize(contents) super end
Calls superclass method
Private Instance Methods
Source
# File lib/active_support/encrypted_configuration.rb, line 68 def deep_transform(hash) return hash unless hash.is_a?(Hash) h = ActiveSupport::InheritableOptions.new hash.each do |k, v| h[k] = deep_transform(v) end h end
Source
# File lib/active_support/encrypted_configuration.rb, line 82 def deserialize(config) doc = YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(config) : YAML.load(config) doc.presence || {} end
Source
# File lib/active_support/encrypted_configuration.rb, line 78 def options @options ||= deep_transform(config) end