Class: Secvault::EarlyLoader
- Inherits:
-
Object
- Object
- Secvault::EarlyLoader
- Defined in:
- lib/secvault/railtie.rb
Overview
Early loader class to handle secrets before application configuration
Class Method Summary collapse
Class Method Details
.setup_early_secrets(app) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/secvault/railtie.rb', line 50 def setup_early_secrets(app) # Captured in a local variable because `define_singleton_method` below binds # `self` to `Rails.application`, which doesn't have `debug_secvault?`. in_debug_mode = debug_secvault? puts "[Secvault Debug] setup_early_secrets called" if in_debug_mode if Rails.application.respond_to?(:secrets) && !Rails.application.secrets.empty? puts "[Secvault Debug] Secrets already exist, skipping early load" if in_debug_mode return end # Look for Secvault configuration in the app secrets_config = find_secvault_config(app) puts "[Secvault Debug] Found config: #{secrets_config&.keys}" if in_debug_mode return unless secrets_config begin # Load secrets using the configuration found all_secrets = Secvault::Secrets.parse(secrets_config[:files], env: Rails.env) puts "[Secvault Debug] Loaded secrets keys: #{all_secrets.keys}" if in_debug_mode # Set up Rails.application.secrets immediately Rails.application.define_singleton_method(:secrets) do @secrets ||= begin current_secrets = ActiveSupport::OrderedOptions.new current_secrets.merge!(all_secrets) puts "[Secvault Debug] Returning secrets with encryption: #{current_secrets.encryption}" if in_debug_mode current_secrets end end # Test the secrets immediately test_encryption = Rails.application.secrets.encryption puts "[Secvault Debug] Test access - encryption: #{test_encryption.class} - #{test_encryption}" if in_debug_mode Rails.logger&.info "[Secvault] Early secrets loaded from #{secrets_config[:files].size} files" if in_debug_mode rescue => e Rails.logger&.warn "[Secvault] Failed to load early secrets: #{e.message}" end end |