Ruby 未在另一个属性中解析chef属性值

Ruby 未在另一个属性中解析chef属性值,ruby,attributes,chef-infra,Ruby,Attributes,Chef Infra,我正在将default.rb中的属性设置为 default[:my_app] = { :vol => "data02", :commitlog => "/foo/bar/node[:vol]/commitlog", } 但是,:vol值未在commitlog属性中得到解析,我得到以下错误 mError executing action `create` on resource 'directory[/foo/bar/node[:vol]/comitlog]'[0m 您缺少

我正在将default.rb中的属性设置为

default[:my_app] = {
  :vol => "data02",
  :commitlog => "/foo/bar/node[:vol]/commitlog",
}
但是,
:vol
值未在commitlog属性中得到解析,我得到以下错误

mError executing action `create` on resource 'directory[/foo/bar/node[:vol]/comitlog]'[0m

您缺少字符串插值语法,例如
y=“X的值为#{X}。”
您可能需要:

default[:my_app] = {
  :vol => "data02",
  :commitlog => "/foo/bar/#{node[:vol]}/commitlog",
}

另外,请记住,如果您使一个属性依赖于另一个属性的值,您可能会稍后重写
节点[:my_app][:vol]
,并期望
节点[:my_app][:commitlog]
的值随它而改变,而它可能不会改变。属性将一起解析,可能在覆盖影响第一个属性之前。

即使在我使用插值语法之后,当我在配方中使用node[:my_app][:commitlog]时,它会显示/foo/bar//commitlog

“/foo/bar/{node[:vol]}/commitlog”
请参阅文档,非常感谢您的回复。即使在我使用插值语法之后,当我在recipe中使用node[:my_app][:commitlog]时,它显示/foo/bar//commitlog听起来像是
node[:vol]
不是您想象的那样,或者您错过了双引号。