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