2016-04-14 51 views
0

我有這個奇怪的問題節點屬性評價;

NoMethodError 
------------- 
undefined method `split' for 3:Fixnum 

Cookbook Trace: 
--------------- 
    /var/chef/cache/cookbooks/maven/attributes/default.rb:27:in `from_file' 

Relevant File Content: 
---------------------- 
/var/chef/cache/cookbooks/maven/attributes/default.rb: 

20: # See the License for the specific language governing permissions and 
21: # limitations under the License. 
22: # 
23: 
24: default['maven']['m2_home'] = '/usr/local/maven' 
25: default['maven']['mavenrc']['opts'] = '-Dmaven.repo.local=$HOME/.m2/repository -Xmx384m' 
26: default['maven']['version'] = '3.3.3' 
27>> default['maven']['url'] = "http://apache.mirrors.tds.net/maven/maven-#{node['maven']['version'].split('.')[0]}/#{node['maven']['version']}/binaries/apache-maven-#{node['maven']['version']}-bin.tar.gz" 

第26行定義屬性爲「3.3.3」,這是字符串,並分割應該有工作。

當我檢查的節點,它有一個值

maven 
    version : 3 

我這個值改成

'3.3.3' 

而且現在的配方可以成功運行。

我假定節點屬性被評估,然後設置爲節點。我爲什麼要面對這個問題,以及價值的改變如何解決問題。

感謝

回答

0

你可能在過去的一段時間內使用knife node edit或類似的命令。那些直接在節點上設置的屬性是永久性的,優先級高於default,所以它會掩蓋食譜中的默認屬性。您可以再次使用knife node edit僅從節點的normal部分刪除該屬性,並且Cookbook默認值將接管。

+0

太棒了!這是失蹤的一塊:)你知道這些正常屬性是如何進入的嗎?像刀節點編輯以外的其他方式?再次感謝 –

+1

如果你在配方中使用'node.set',它會做同樣的事情。 – coderanger