cool_id 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d21dfe6f7e0ba866d387136fd73f24bbf8645c6aeb939a9e0a74bfa1d3cacd68
4
- data.tar.gz: 8657776cd68fcd3e97612f024f78f3c1f22a161c98ac0eb61456f077bd818e7c
3
+ metadata.gz: 46c7659051c9dc4f86b95992ff6e00a493ff9a7bdcf414ec1e3aec3a2c32c5a6
4
+ data.tar.gz: d20ec27d2c057769a842f5a5cbf064fbe1b8ac21c3421ed84354b2357a35c725
5
5
  SHA512:
6
- metadata.gz: c01f20fbeb0475a5462667c76645f9d16c35a04d3751cb6594951c5694e0b1d7ac7cb0f4b2dced316be490686d8590c96b33c10841efcffb0ccd3bc84fc60a24
7
- data.tar.gz: 0d089f99a4f74f3ff709f025fbfa0779b12d3fc028b1c192948534e33a0623f134cadb580d06507ef6e7474242e719e1329641f5741c11e28a9e270e18015fcc
6
+ metadata.gz: a3f62a5b8385de8e2634711d4f8193ce3f3de9cd10b3b66b59db4663e0c76d781da1f46536ba4abd8196954c4c6e209091420021eebe2dd80598f71d95204348
7
+ data.tar.gz: f44f681360f02e533b44e4c815afcceecb25e9cbb2bc22dda2f81904f91d94824478cf7cc3ce11760d2123b444953d0fc6056f10eaf3b9c0f30da4e3079c14c8
data/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.2.4] - 2025-12-18
6
+
7
+ ### Fixed
8
+
9
+ - raise an error if a prefix is registered more than once
10
+
5
11
  ## [0.2.3] - 2025-05-29
6
12
 
7
13
  ### Fixed
@@ -32,7 +38,8 @@
32
38
 
33
39
  - Initial release
34
40
 
35
- [Unreleased]: https://github.com/schpet/cool_id/compare/v0.2.3...HEAD
41
+ [Unreleased]: https://github.com/schpet/cool_id/compare/v0.2.4...HEAD
42
+ [0.2.4]: https://github.com/schpet/cool_id/compare/v0.2.3...v0.2.4
36
43
  [0.2.3]: https://github.com/schpet/cool_id/compare/v0.2.2...v0.2.3
37
44
  [0.2.2]: https://github.com/schpet/cool_id/compare/v0.2.1...v0.2.2
38
45
  [0.2.1]: https://github.com/schpet/cool_id/compare/v0.2.0...v0.2.1
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CoolId
4
- VERSION = "0.2.3"
4
+ VERSION = "0.2.4"
5
5
  end
data/lib/cool_id.rb CHANGED
@@ -12,6 +12,9 @@ module CoolId
12
12
  # Error raised when the maximum number of retries is exceeded while generating a unique ID.
13
13
  class MaxRetriesExceededError < StandardError; end
14
14
 
15
+ # Error raised when a prefix is already registered to another model.
16
+ class DuplicatePrefixError < StandardError; end
17
+
15
18
  # Default separator used in generated IDs.
16
19
  DEFAULT_SEPARATOR = "_"
17
20
 
@@ -114,7 +117,12 @@ module CoolId
114
117
  # @param prefix [String] The prefix to register.
115
118
  # @param model_class [Class] The ActiveRecord model class to associate with the prefix.
116
119
  # @return [void]
120
+ # @raise [DuplicatePrefixError] If the prefix is already registered to a different model.
117
121
  def register(prefix, model_class)
122
+ existing = @prefix_map[prefix]
123
+ if existing && existing != model_class
124
+ raise DuplicatePrefixError, "Prefix '#{prefix}' is already registered to #{existing.name}"
125
+ end
118
126
  @prefix_map[prefix] = model_class
119
127
  end
120
128
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cool_id
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Schilling
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-29 00:00:00.000000000 Z
11
+ date: 2025-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord