2016-03-07 75 views
1

我想通过定义一个路径来设置一个使用两个可用节点属性的Ruby ENV,但标准的字符串插值语法不起作用。要达到这样的事:如何在Chef中使用多个属性来设置Ruby ENV

ENV['CONFIGURATION_DIR'] = '/mnt/#{node[\'clientid\']}-#{node[\'environment\']}/conifg' 

也试过

ENV['CONFIGURATION_DIR'] = '/mnt/node[\'clientid\']-node[\'environment\']/config' 

是有可能设定一个使用Ruby ENV多个属性/数据包项值?

+0

之所以能够使用其中不接受熟悉的语法的环境属性绕过这个问题:环境 “CONFIGURATION_DIR”=>“的/ mnt /#{节点[ '的clientid']} - #{节点[ '环境' ]}/config“..如果任何人有一个解决方案,仍然想要一个解决方案。 –

回答

1

如果要使用嵌入式变量,则必须使用双引号。

bar = 'apple' 

"foo #{bar}" # This will work. 
=> "foo apple" 

'foo #{bar}' # This will not work. 
=> "foo #{bar}" 
+0

谢谢,基于你的建议,我改为:ENV ['CTC_CONFIGURATION'] =“/ mnt /#{node ['ctc_clientid']} - #{node ['ctc_environment']}/ctcConfiguration”但仍然没有任何结果。如果它有帮助,那么具有一个值的标准方式完全没有引号,例如ENV ['HOME'] = node ['home'] –

+0

设置它之后,它的值是多少。也许你没有把它设置成你认为的那样。 –

+0

它是空白的。为了测试,我有一个额外的步骤,可以打印所有我的数据块项目值,属性和envs。那个显示为没有。 –

相关问题