class ActiveUxid::Ulid

Public Class Methods

encode() click to toggle source
# File lib/active_uxid/ulid.rb, line 5
def self.encode
  klass = new
  klass.uxid_encode
end

Public Instance Methods

uxid_bytes() click to toggle source
# File lib/active_uxid/ulid.rb, line 17
def uxid_bytes
  "#{uxid_unixtime_48bit}#{SecureRandom.random_bytes(10)}"
end
uxid_encode() click to toggle source
# File lib/active_uxid/ulid.rb, line 10
def uxid_encode
  (1..encoding_length).reduce('') do |str, num|
    shift = 128 - 5 * num
    "#{str}#{encoding_chars[(uxid_octect >> shift) & 0x1f]}"
  end
end
uxid_octect() click to toggle source
# File lib/active_uxid/ulid.rb, line 21
def uxid_octect
  (hi, lo) = uxid_bytes.unpack('Q>Q>')
  (hi << 64) | lo
end
uxid_unixtime_48bit() click to toggle source
# File lib/active_uxid/ulid.rb, line 30
def uxid_unixtime_48bit
  [uxid_unixtime_flex].pack('Q>')[2..-1]
end
uxid_unixtime_flex() click to toggle source
# File lib/active_uxid/ulid.rb, line 26
def uxid_unixtime_flex
  (Time.current.to_f * 10_000).to_i
end