くりにっき

フルスタックキュアエンジニアです

Itamae v1.10.0をリリースした

リリースノート

https://github.com/itamae-kitchen/itamae/blob/master/CHANGELOG.md#v1100

今回の差分は1つだけですが、個人的には目玉機能だと思ってます。

Support only_if and not_if inside a define

github.com

v1.9.xまで

みんな大好き define *1 ですが、define の呼び出しの中では only_ifnot_if が使えなくて define の実行自体をスキップするには下記のように外部から無理やり条件を渡すしかありませんでした

define :install_and_enable_package, version: nil, only_if: nil do
  v = params[:version]
  only_if_condition = params[:only_if]
  package params[:name] do
    version v if v
    action :install
    only_if only_if_condition
  end

  service params[:name] do
    action :enable
    only_if only_if_condition
  end
end

install_and_enable_package "nginx" do
  only_if "ls /tmp/install_eginx"
end

v1.10.0以降

define の呼び出しの中で only_ifnot_if を使えるようにしたので、今までのようなハックは不要になり下記のように他のリソース同様シュッと書けるようになります。

define :install_and_enable_package, version: nil do
  v = params[:version]
  package params[:name] do
    version v if v
    action :install
  end

  service params[:name] do
    action :enable
  end
end

install_and_enable_package "nginx" do
  only_if "ls /tmp/install_eginx"
end

既存のレシピやプラグインの中でdefineを多用している場合はv1.10.0に上げることでリファクタリングできるようになると思われます。

*1:要出典