Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

書籍 Ruby Cookbook | バージョン番号付き履歴ファイルの作成

パンくず

Ruby Cookbook
バージョン番号付き履歴ファイルの作成

概要

バージョン番号付き履歴ファイルの作成

内容

バージョン番号付き履歴ファイルの作成。
書籍では履歴番号だけ追加してましたが、応用してシステム日付を追加しました。
本日の日付+0詰め3桁の連番履歴ファイルを作成する。

サンプルコード

# encoding: Windows-31J
require "date"

class File
  # ファイル名、桁数、拡張子を引数に指定
  def File.output_file_with_history_no(filename, digits, extname)
    basename = filename.gsub(extname,"")
    filename = filename
    date = "_" + Date::today.strftime("%Y%m%d")
    suffix = "_#{("0" * digits)}"
    while File.exists?(filename)
      suffix = suffix.succ
      filename = basename + date + suffix + extname
    end
    return filename
  end
end

10.times.each do |number|
  filename = File.output_file_with_history_no("./conf/ほげ.txt", 3, ".txt")
  open(filename, 'w') {|file|file << "#{number}回目"}
  puts "create #{filename}"
end

出力

ファイルの出力結果をシェルで確認

$ls -1
ほげ.txt
ほげ_20120911_001.txt
ほげ_20120911_002.txt
ほげ_20120911_003.txt
ほげ_20120911_004.txt
ほげ_20120911_005.txt
ほげ_20120911_006.txt
ほげ_20120911_007.txt
ほげ_20120911_008.txt
ほげ_20120911_009.txt
ほげ_20120911_010.txt