允许使用LWRP的Chef cookbook名称中的字符

时间:2014-09-15 18:04:42

标签: chef

我在我的食谱中定义了LWRP资源 - 如http://docs.getchef.com/chef/lwrps_custom.html#file-locations

所述

所以让我们假设我的食谱名称是某个名字,所以我有文件(你可以猜测这个LWRP基于https://github.com/sethvargo-cookbooks/users代码):

./some-name/recipes/default.rb
./some-name/recipes/some-kind.rb
./some-name/providers/manage.rb
./some-name/resources/manage.rb

文件 ./ some-name / recipes / some-kind.rb 的内容是:

some-name_manage "some-kind" do
  data_bag "some-kind"
end

在调用刀烹饪书名字上传时,我得到了:

FATAL: Cookbook file recipes/some-kind.rb has a ruby syntax error: 
FATAL: /path/to/chef-repo/cookbooks/some-name/recipes/some-kind.rb:2: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' 
FATAL: some-name_manage "some-kind" do
FATAL:                   ^
FATAL: /path/to/chef-repo/cookbooks/some-name/recipes/some-kind.rb:2: syntax error, unexpected keyword_do, expecting keyword_end
FATAL: /path/to/chef-repo/cookbooks/some-name/recipes/some-kind.rb:8: syntax error, unexpected keyword_end, expecting $end

问题是我的食谱包含破折号(“ - ”)字符。如果我没有在菜谱中加入破折号,那么一切都会好的。

所以问题是:在愿意使用LWRP时,有没有办法在cookbook名称中使用短划线字符?某种逃避?

1 个答案:

答案 0 :(得分:7)

连字符在资源名称中变为下划线,因此应为some_name_manage。这是因为Ruby方法名称中不允许使用连字符。