0
我只是想了解我們如何定義食譜的屬性文件中的屬性結構。廚師屬性結構
下面是兩個例子:
// style-A
default['my_cookbook']['name'] = 'something'
default['my_cookbook']['version'] = '0.1.0'
// style-B
node.default.my_cookbook = {
:name => 'something',
:version => '0.1.0'
}
我問這個問題的原因是,在廚師的以前的版本我有點記得風格-A強烈建議所有的社區食譜遵循這種風格。我還記得當我嘗試覆蓋角色或環境中的屬性時,會看到與樣式-B有關的一些問題。如果嘗試覆蓋整個散列結構中的單個屬性,我會想出一個奇怪的行爲來取代整個散列結構。
我現在沒有看到這個錯誤,我在最新的11版本的廚師,但只是想知道這是我應該擔心的事情。我試圖用一種風格與我的所有烹飪書一致,並且我需要關於如何構造它的一些建議。在這一點上重要嗎?
廚師使用Mash而不是哈希。不知道它是否會自動轉換爲你。我會建議= Mash.new({你哈希})。但我不能發誓。 –
它的確,A和B之間的主要缺點是覆蓋中的方法訪問,由於該方法返回值而沒有設置它,所以不會覆蓋。 'default ['test'] = {:name =>'test1'}'是非常有效並且可行的。只留在符號或字符串屬性訪問上以避免覆蓋方法失敗。 – Tensibai