Skip to content

Commit

Permalink
Merge pull request #51324 from rosa/memoize-invariable-providers-in-s…
Browse files Browse the repository at this point in the history
…cheme

Memoize `key_provider` from `key` or deterministic `key_provider` if any
  • Loading branch information
jhawthorn committed Mar 14, 2024
2 parents 3efae44 + 4a0b2a0 commit 93b89b1
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions activerecord/lib/active_record/encryption/scheme.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def fixed?
end

def key_provider
@key_provider_param || build_key_provider || default_key_provider
@key_provider_param || key_provider_from_key || deterministic_key_provider || default_key_provider
end

def merge(other_scheme)
Expand Down Expand Up @@ -80,10 +80,14 @@ def validate_config!
raise Errors::Configuration, "key_provider: and key: can't be used simultaneously" if @key_provider_param && @key
end

def build_key_provider
return DerivedSecretKeyProvider.new(@key) if @key.present?
def key_provider_from_key
@key_provider_from_key ||= if @key.present?
DerivedSecretKeyProvider.new(@key)
end
end

if @deterministic
def deterministic_key_provider
@deterministic_key_provider ||= if @deterministic
DeterministicKeyProvider.new(ActiveRecord::Encryption.config.deterministic_key)
end
end
Expand Down

0 comments on commit 93b89b1

Please sign in to comment.