あるリソース属性のデフォルト値を別の属性の値に設定しようとしています。
作成中のTomcatクックブック用に、次の定義を含むリソースを定義しています。個別に設定できる「name」属性と「service_name」属性が必要です。サービス名が設定されていない場合、「名前」に指定されているものをデフォルトにしたい。
以下は期待どおりに機能しません。
attribute :name, :kind_of => String, :required => true, :name_attribute => true
attribute :service_name, :kind_of => String, :default => :name
2 行目の末尾にある ":default => :name" に注意してください。レシピの新しいブロックで自分のリソースを参照するとき
my_tomcat "install tomcat" do
name "foo_bar"
end
属性値は次のように割り当てられます
name = "foo_bar"
service_name = "name"
これは私が期待したものではありません。明示的に設定されていない限り、service_name を「foo_bar」にしたかったのです。
私はもう試した
attribute :service_name, :kind_of => String, :default => new_resource.name
attribute :service_name, :kind_of => String, :default => @new_resource.name
しかし、それらはコンパイルされません。
私がやろうとしていることをする方法はありますか?