2026/02/23(月) [n年前の日記]
#2 [ruby] 日付とRubyバージョンでファイル名を作って保存
Ruby の gem list を、日付とRUbyバージョンでファイル名を作ってテキスト保存するスクリプトをAI(Google Gemini)に作成してもらったのでメモ。
savegemlist.rb
このくらいのスクリプトならさっくり作成してもらえるなんて凄い時代になってきた…。しかも「コメントをつけて」とお願いすると細かく説明してくれる…。
savegemlist.rb
dnum = Time.now.strftime('%Y%m%d')
vnum = RUBY_VERSION.delete('.')
filename = "#{dnum}_Ruby#{vnum}.txt"
filename_nover = "#{dnum}_Ruby#{vnum}_no-versions.txt"
File.write(filename, `gem list`)
gem_list_clean = `gem list`.gsub(/\s\(.*\)/, "")
File.write(filename_nover, gem_list_clean)
puts "Save : #{filename}"
puts "Save : #{filename_nover}"
このくらいのスクリプトならさっくり作成してもらえるなんて凄い時代になってきた…。しかも「コメントをつけて」とお願いすると細かく説明してくれる…。
# 1. 現在の日付を「YYYYMMDD」形式(例:20260224)で取得して変数dnumに代入
dnum = Time.now.strftime('%Y%m%d')
# 2. 実行中のRubyのバージョン(例:3.2.1)から「.」を取り除き(例:321)、変数vnumに代入
vnum = RUBY_VERSION.delete('.')
# 3. 保存するファイル名を生成(例:20260224_Ruby321.txt)
filename = "#{dnum}_Ruby#{vnum}.txt"
# 4. バージョン番号を含まない保存用ファイル名を生成(例:20260224_Ruby321_no-versions.txt)
filename_nover = "#{dnum}_Ruby#{vnum}_no-versions.txt"
# 5. バッククォート「` `」でシェルコマンド `gem list` を実行し、
# その標準出力を filename に指定したファイルへ書き込む
File.write(filename, `gem list`)
# 6. `gem list` の結果から、正規表現を用いて「 (1.2.3)」のようなバージョン表記部分を
# 空文字に置換(削除)し、変数 gem_list_clean に代入
# ※ \s は空白、\(.*\) は括弧で囲まれた任意の文字列にマッチ
gem_list_clean = `gem list`.gsub(/\s\(.*\)/, "")
# 7. 加工したクリーンなリストを filename_nover に指定したファイルへ書き込む
File.write(filename_nover, gem_list_clean)
# 8. 完了メッセージをコンソールに表示
puts "Save : #{filename}"
puts "Save : #{filename_nover}"
[ ツッコむ ]
以上です。