2017-03-21 34 views
0

嗨,我使用的廚師爲WordPress站點的部署自動化凡在我需要閱讀databasehost,從我shared.ymlwp-config.phpusernamepassword所以我在我的模板文件插在PHP的廚師自動化

嘗試下面的代碼
<?php 
define('DB_NAME', '"<%= @database %>"'); 
define('DB_USER', '"<%= @username %>"'); 
define('DB_PASSWORD', '"<%= @password %>"'); 
define('DB_HOST', '"<% @host %>"'); 
define('DB_CHARSET', 'utf8mb4'); 
define('DB_COLLATE', ''); 
?> 

但是,插值不發生在應該採取在_shared.yml中定義的實際值的位置。廚師的屬性如下所示。

default[:example_wp][:database][:host]   = "" 
default[:example_wp][:database][:adapter]  = "mysql2" 
default[:example_wp][:database][:database]  = "wordpress" 
default[:example_wp][:database][:username]  = "wordpress" 
default[:example_wp][:database][:password]  = "" 

有人可以幫助我嘗試插值。

謝謝。

+0

似乎很奇怪是單雙引號。 ''「<%= @database%>」''vs'「<%= @database%>」'。還有什麼'@'應該是'$'我在這個符號上找不到任何東西。 – nerdlyist

+0

@nerdlyist其實這是一個ruby語法來表示它是由'<%@variable%>表示的ruby變量' –

+0

這是一個PHP文件或ruby文件嗎?你如何解析yaml? – nerdlyist

回答

0

那麼幾個問題,第一個是,你需要確保你傳遞的屬性的模板資源:

template '/whatever/wp-config.php' do 
    # Other stuff here ... 
    variables node[:example_wp][:database].to_hash 
end 

第二個是,在評論中指出,你可能不要意思是在模板中使用額外的雙引號,或者渲染值看起來像'"wordpress"'。第三,我不確定shared.yml部分是什麼意思,是這些節點屬性,還是你試圖從本地文件讀取它們,如果是後者,那麼文件來自哪裏?

+0

'_shared.yml'是節點屬性文件,我傳遞了我想在配方中使用的所有數據庫連接的詳細信息。另外我在這裏使用模板資源。所以我並不擔心。我所關心的是我的ruby變量沒有在最終是模板文件的php配置文件中插入。 –