【问题标题】:allowed characters in Chef cookbook name with LWRP厨师食谱名称中允许使用 LWRP 的字符
【发布时间】:2014-09-16 02:11:52
【问题描述】:

我的食谱中定义了 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 时,有没有办法在菜谱名称中使用破折号?某种逃避?

【问题讨论】:

    标签: chef-infra


    【解决方案1】:

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

    【讨论】:

    • 如果您想查看名称是否有效,请尝试使用相关名称定义 ruby​​ 方法,如果 ruby​​ 允许您这样做,这是一个不错的名称。
    猜你喜欢
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 2019-01-29
    • 2021-11-01
    • 1970-01-01
    相关资源
    最近更新 更多