我有这个奇怪的问题
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 :(得分:0)
您可能在过去的某个时间使用过knife node edit
或类似的命令。直接在节点上设置的那些属性是永久性的,优先级高于default
,因此它会从cookbook中隐藏您的默认属性。您可以再次使用knife node edit
从节点的normal
部分删除该属性,并且菜谱默认将接管。