Skip to content

Commit 93b89b1

Browse files
authored
Merge pull request rails#51324 from rosa/memoize-invariable-providers-in-scheme
Memoize `key_provider` from `key` or deterministic `key_provider` if any
2 parents 3efae44 + 4a0b2a0 commit 93b89b1

File tree

1 file changed

+8
-4
lines changed
  • activerecord/lib/active_record/encryption

1 file changed

+8
-4
lines changed

activerecord/lib/active_record/encryption/scheme.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def fixed?
5050
end
5151

5252
def key_provider
53-
@key_provider_param || build_key_provider || default_key_provider
53+
@key_provider_param || key_provider_from_key || deterministic_key_provider || default_key_provider
5454
end
5555

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

83-
def build_key_provider
84-
return DerivedSecretKeyProvider.new(@key) if @key.present?
83+
def key_provider_from_key
84+
@key_provider_from_key ||= if @key.present?
85+
DerivedSecretKeyProvider.new(@key)
86+
end
87+
end
8588

86-
if @deterministic
89+
def deterministic_key_provider
90+
@deterministic_key_provider ||= if @deterministic
8791
DeterministicKeyProvider.new(ActiveRecord::Encryption.config.deterministic_key)
8892
end
8993
end

0 commit comments

Comments
 (0)