Module: PolyId
- Defined in:
- lib/polyid.rb,
lib/polyid/cache.rb,
lib/polyid/model.rb,
lib/polyid/railtie.rb,
lib/polyid/version.rb,
lib/polyid/binary_uuid_type.rb
Defined Under Namespace
Modules: Cache, Model
Classes: BinaryUuidType, Railtie
Constant Summary
collapse
- UUID_PATTERN =
/\A\h{8}-\h{4}-\h{4}-\h{4}-\h{12}\z/i
- VERSION =
Gem.loaded_specs["polyid"].version.to_s
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.auto_detect=(value) ⇒ Object
Sets the attribute auto_detect
18
19
20
|
# File 'lib/polyid.rb', line 18
def auto_detect=(value)
@auto_detect = value
end
|
.cache ⇒ Object
20
21
22
|
# File 'lib/polyid.rb', line 20
def cache
@cache ||= ActiveSupport::Cache::MemoryStore.new
end
|
.cache_binary_uuids=(value) ⇒ Object
Sets the attribute cache_binary_uuids
18
19
20
|
# File 'lib/polyid.rb', line 18
def cache_binary_uuids=(value)
@cache_binary_uuids = value
end
|
.default_uuid_attribute ⇒ Object
65
66
67
|
# File 'lib/polyid.rb', line 65
def default_uuid_attribute
@default_uuid_attribute ||= "uuid"
end
|
.uuid_generator ⇒ Object
42
43
44
|
# File 'lib/polyid.rb', line 42
def uuid_generator
@uuid_generator ||= SecureRandom.respond_to?(:uuid_v7) ? :v7 : :v4
end
|
Class Method Details
.auto_detect? ⇒ Boolean
61
62
63
|
# File 'lib/polyid.rb', line 61
def auto_detect?
@auto_detect.nil? ? true : @auto_detect
end
|
.cache_binary_uuids? ⇒ Boolean
34
35
36
37
38
39
40
|
# File 'lib/polyid.rb', line 34
def cache_binary_uuids?
unless instance_variable_defined?(:@cache_binary_uuids)
@cache_binary_uuids = !!(defined?(Rails) && Rails.respond_to?(:env) && Rails.env.production?)
end
@cache_binary_uuids
end
|
.generate_uuid(generator = nil) ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/polyid.rb', line 46
def generate_uuid(generator = nil)
generator ||= uuid_generator
case generator
when Proc
generator.call
when :v7, 7, "v7", "7"
SecureRandom.uuid_v7
when :v4, 4, "v4", "4"
SecureRandom.uuid
else
raise ArgumentError, "unsupported uuid generator: #{generator.inspect}"
end
end
|
.is_uuid?(value) ⇒ Boolean
69
70
71
72
73
74
75
76
|
# File 'lib/polyid.rb', line 69
def is_uuid?(value)
return false unless value.is_a?(String) && UUID_PATTERN.match?(value)
version = value.getbyte(14).chr.to_i(16)
variant = value.getbyte(19).chr.to_i(16)
version.between?(1, 8) && variant.between?(8, 11)
end
|
.reset ⇒ Object
24
25
26
27
28
29
30
31
32
|
# File 'lib/polyid.rb', line 24
def reset
@cache&.clear if instance_variable_defined?(:@cache)
remove_instance_variable(:@cache) if instance_variable_defined?(:@cache)
remove_instance_variable(:@cache_binary_uuids) if instance_variable_defined?(:@cache_binary_uuids)
remove_instance_variable(:@uuid_generator) if instance_variable_defined?(:@uuid_generator)
remove_instance_variable(:@auto_detect) if instance_variable_defined?(:@auto_detect)
remove_instance_variable(:@default_uuid_attribute) if instance_variable_defined?(:@default_uuid_attribute)
end
|