Generate UUIDs in Ruby

Resources  |  Generate UUIDs in Ruby

Generating a UUID in Ruby can be done using the built-in SecureRandom module, which is part of the Ruby Standard Library. Here's how you can generate a UUID using SecureRandom:

Basic UUID Generation

The SecureRandom module provides a method uuid to generate a random UUID (UUIDv4).

Example: Generating a UUID (version 4)

require 'securerandom'

# Generate a new UUID (version 4)
new_uuid = SecureRandom.uuid

# Output the generated UUID
puts "Generated UUID: #{new_uuid}"

Explanation

  • SecureRandom.uuid: This method generates a random UUID (UUIDv4).
  • new_uuid: The generated UUID.
  • puts "Generated UUID: #{new_uuid}": Outputs the UUID as a string.

Running the Code

Save the code in a file, for example, generate_uuid.rb, and run it using Ruby:

ruby generate_uuid.rb

Output Example

When you run the script, the output will be similar to:

Generated UUID: 123e4567-e89b-12d3-a456-426614174000

Each time you run the program, a different UUID will be generated.

Using the uuidtools Gem for Other UUID Versions

If you need to generate other versions of UUIDs (e.g., UUIDv1, UUIDv3, UUIDv5), you can use the uuidtools gem. Here's how you can do it:

  1. Install the uuidtools Gem:

    You can install the uuidtools gem using the following command:

    gem install uuidtools
    
  2. Generate Different Versions of UUIDs:

    Here are examples of how to generate UUIDv1, UUIDv3, and UUIDv5 using the uuidtools gem:

    require 'uuidtools'
    
    # Generate a new UUID (version 1)
    uuid_v1 = UUIDTools::UUID.timestamp_create
    puts "Generated UUID (v1): #{uuid_v1}"
    
    # Generate a new UUID (version 3, based on MD5 hash of a namespace and name)
    namespace_uuid = UUIDTools::UUID.parse("6ba7b810-9dad-11d1-80b4-00c04fd430c8")
    name = 'example.com'
    uuid_v3 = UUIDTools::UUID.md5_create(namespace_uuid, name)
    puts "Generated UUID (v3): #{uuid_v3}"
    
    # Generate a new UUID (version 5, based on SHA-1 hash of a namespace and name)
    uuid_v5 = UUIDTools::UUID.sha1_create(namespace_uuid, name)
    puts "Generated UUID (v5): #{uuid_v5}"
    

Explanation

  • UUIDTools::UUID.timestamp_create: Generates a time-based UUID (UUIDv1).
  • UUIDTools::UUID.md5_create(namespace_uuid, name): Generates a UUIDv3 based on the MD5 hash of the namespace UUID and name.
  • UUIDTools::UUID.sha1_create(namespace_uuid, name): Generates a UUIDv5 based on the SHA-1 hash of the namespace UUID and name.

Running the Code

Save the code in a file, for example, generate_uuid_with_uuidtools.rb, and run it using Ruby:

ruby generate_uuid_with_uuidtools.rb

Summary

Here are the key steps to generate different versions of UUIDs in Ruby:

  1. Generate a random UUID (version 4) using SecureRandom:

    require 'securerandom'
    new_uuid = SecureRandom.uuid
    puts "Generated UUID: #{new_uuid}"
    
  2. Generate other versions of UUIDs using the uuidtools gem:

    require 'uuidtools'
    
    # UUIDv1
    uuid_v1 = UUIDTools::UUID.timestamp_create
    puts "Generated UUID (v1): #{uuid_v1}"
    
    # UUIDv3
    namespace_uuid = UUIDTools::UUID.parse("6ba7b810-9dad-11d1-80b4-00c04fd430c8")
    name = 'example.com'
    uuid_v3 = UUIDTools::UUID.md5_create(namespace_uuid, name)
    puts "Generated UUID (v3): #{uuid_v3}"
    
    # UUIDv5
    uuid_v5 = UUIDTools::UUID.sha1_create(namespace_uuid, name)
    puts "Generated UUID (v5): #{uuid_v5}"
    

These methods provide flexible options for generating different types of UUIDs in Ruby.