2016-03-07 34 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。那個顯示爲沒有。 –

相關問題