任意の桁数&区切り文字のランダムなIDを生成するスクリプト

ソフトウェアのプロダクトキーのような文字列を自動生成するスクリプトを書いたのでメモ。
とりあえず動くレベルのコードですが。

# 使用する文字のリスト
list = []

# リストに数値を追加
0.upto(9) do |i|
  list << i.to_s
end

# リストにアルファベット(小文字のみ)を追加
"a".upto("z") do |c|
  list << c
end

# 区切り文字と各区分の桁数を指定
sep = "-"
digits = [3, 3, 4]

# ID生成
id = ""
digits.each do |digit|
  digit.times do
    id << list.choice
  end
  id << sep
end
id.chop!

p id

何も考えずに書いたので、やはりメソッドのないコードになってしまった。
ソフトウェアに組み込む際はリファクタリング必須。



【追記】文字のuptoを思いついたので修正 ;-)

ちなみに修正前はこんなんでした。

# リストにアルファベット(小文字のみ)を追加
c = "a"
begin
  list << c
  break if c == "z"
end while c = c.next

ひ、ひどい・・