このチャプターの目次
runnは、対象となる複数のランブックから指定の数(元のランブックの数を超えない数)だけランダムに選択して実行できます(以下、サンプリングと呼びます)。
サンプリングは、ランダム実行( --random
)とは異なり、一度選択して実行したランブックは選択されません。
--sample
runnコマンドで複数のランブックからサンプリングして実行する場合は --sample
オプションを使用します。
ランブックをサンプリングする数を0から元のランブックの数を超えない数の範囲で指定します。
$ runn run path/to/**/*.yml --sample 5
runn.RunSample
runnをパッケージとしてGoのコードの組み込む場合、 runn.Load
の第2引数に渡すオプションとして runn.RunSample
を指定します。
ctx := context.Background()
opts := []runn.Option{
runn.T(t),
runn.RunSample(5),
}
o, err := runn.Load("path/to/**/*.yml", opts...)
if err != nil {
t.Fatal(err)
}
if err := o.RunN(ctx); err != nil {
t.Fatal(err)
}
--sample
の名前
[コラム] --sample
の名前はRubyのArray#sampleを参考にしてつけたと思っています。
筆者は、Rubyの(柔軟な言語仕様もですが)表現力豊かな組み込みライブラリのメソッド群が好きです。
同じ機能でもあえて別名のメソッドが用意されていることがあるという点も好きです。
また、メソッド名に !
や ?
を使う直感的でわかりやすい命名も好きです[1]。
--sample
の名前もそれとなしに決めましたが、無意識ながらもRubyのArray#sampleからきていると思います。
-
私はプログラミング言語を片手で数えるほどしか知りませんが、この命名を知った当時「これは発明だ!」と感動しました。 ↩︎