You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
require"cuid"
cuid =CUID.random
cuid.to_s # => ck8vrqmp20000df63z8lsaahr
JSON Mapping
require"cuid"require"cuid/json"classExampleJSON.mapping id:CUIDend
example =Example.from_json(%({"id": "ck8vrqmp20000df63z8lsaahr"}))
cuid =CUID.random
cuid.to_json # => "\"ck8vrqmp20000df63z8lsaahr\""
Explanation
c - k8vrqmp2 - 0000 - df63 - z8lsaahr
The groups, in order, are:
'c' - identifies this as a cuid, and allows you to use it in html entity ids.
Timestamp in milliseconds since the epoch coverted in base 36.
Counter - A single process might generate the same random string. The weaker the pseudo-random source, the higher the probability. That problem gets worse as processors get faster. The counter will roll over if the value gets too big.
Fingerprint - The first two characters are based on the process id(Process.pid) and the next two characters are based on the hostname(System.hostname). Same method used in the original Node implementation.
Random - It uses a cryptographically secure pseudorandom number Random::Secure#rand function.
Development
Contributions are welcome. Make sure to check the existing issues (including the closed ones) before requesting a feature, reporting a bug or opening a pull requests.