LoginSignup
4
4

More than 5 years have passed since last update.

Ruby | 日付フォルダ生成用 CLI ツール defoker gem の定形出力ルール設定にコールバックを追加 (ver 0.0.6) #ruby #defoker

Posted at

Ruby | 日付フォルダ生成用 CLI ツール defoker gem の定形出力ルール設定にコールバックを追加 (ver 0.0.6) #ruby #defoker

概要

日付フォルダ生成用 CLI ツール defoker gem の定形出力ルール設定にコールバックを追加します。

defoker gem って何?,定形出力ルール設定って何?という方は

まずはこちらを御覧ください。

追加仕様の想定されるユースケースの一例

現状、 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

参照

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4