Ruby | 日付フォルダ生成用 CLI ツール defoker gem の定形出力ルール設定にコールバックを追加 (ver 0.0.6) #ruby #defoker
概要
日付フォルダ生成用 CLI ツール defoker gem の定形出力ルール設定にコールバックを追加します。
defoker gem って何?,定形出力ルール設定って何?という方は
まずはこちらを御覧ください。
- Ruby | 日付フォルダ生成用 CLI ツール defoker gem を作成した
- Ruby | 日付フォルダ生成用 CLI ツール defoker gem に内部 DSL による定形出力ルール設定機能を追加 (ver 0.0.5)
追加仕様の想定されるユースケースの一例
現状、 defoker gem は日付フォーマットのフォルダを作成するだけです。
各フォルダを作成する際に、フォルダ内にテンプレートを作成しておきたい、という要件があったとします。
例えば、下記のような構成で日々フォルダを作成したい場合。(hige, hoge, hage の部分は可変の名前)
$ tree
┣ 20141006_hige
┃ ┣ template.rb
┃ ┗ template.txt
┣ 20141007_hoge
┃ ┣ template.rb
┃ ┗ template.txt
┗ 20141008_hage
┣ template.rb
┗ template.txt
template.txt, template.rb はこの構成での作業で利用するテンプレートです。
追加仕様
- Defokerfile に callback を追加する
- callback は lambda(proc) を記述して、自由に処理を記述できる
- callback はディレクトリ作成直後に呼び出されます
- callback はパラメータとして dir 変数を持ちます。 dir は String でディレクトリ名です
- Defokerfile 内では Ruby のコードを自由に利用できるので、お好みの処理をフックとして作成してください
「定形出力ルール」 + callback を試してみる
仕様は、「追加仕様の想定されるユースケース」をそのまま利用します
Defokerfile
type :today
base ''
callback ->(dir) {
puts dir
File.open("#{dir}/template.txt", 'w:utf-8') { |e|e.puts "template for #{dir}" }
File.open("#{dir}/template.rb'" 'w:utf-8') { |e|e.puts "puts '#{dir}'" }
}
試行
# execute at 20141006
$ defoker rule -a hige
"20141006_hige"
# execute at 20141007
$ defoker rule -a hoge
"20141007_hoge"
# execute at 20141008
$ defoker rule -a hage
"20141008_hage"
$ tree
┣ 20141006_hige
┃ ┣ template.rb
┃ ┗ template.txt
┣ 20141007_hoge
┃ ┣ template.rb
┃ ┗ template.txt
┗ 20141008_hage
┣ template.rb
┗ template.txt