Class: RaceGuard::Distributed::KeyBuilder
- Inherits:
-
Object
- Object
- RaceGuard::Distributed::KeyBuilder
- Defined in:
- lib/race_guard/distributed/key_builder.rb
Overview
Builds bounded, stable lock keys from a namespace + optional resource segment.
Raw resource values are never embedded verbatim (cardinality / key length); they are hashed with SHA-256 (hex prefix).
Constant Summary collapse
- MAX_NAME_BYTES =
128- RESOURCE_HASH_HEX_CHARS =
16
Class Method Summary collapse
Class Method Details
.build(name:, resource: nil, prefix: nil) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/race_guard/distributed/key_builder.rb', line 16 def build(name:, resource: nil, prefix: nil) pfx = if prefix.nil? || (prefix.respond_to?(:empty?) && prefix.empty?) 'race_guard:distributed:' else prefix.to_s end seg = sanitize_name_segment(name) r = resource_segment(resource) r ? "#{pfx}v1:#{seg}:#{r}" : "#{pfx}v1:#{seg}" end |
.resource_digest(resource) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/race_guard/distributed/key_builder.rb', line 28 def resource_digest(resource) return nil if resource.nil? s = resource.to_s return nil if s.empty? Digest::SHA256.hexdigest(s)[0, RESOURCE_HASH_HEX_CHARS] end |