【发布时间】:2015-07-13 13:15:53
【问题描述】:
我正在尝试为 Chef 食谱编写 LWRP,但遇到了一个奇怪的问题,即该属性在一行上似乎完全有效,而 nil 在下一行。
从提供程序代码中,source 行出错:
def create_check
cookbook_file get_check_filename(@current_resource.checkname) do
source "checks/#{@current_resource.checkname}" # undefined method `checkname' for nil:NilClass
mode '0644'
action :create
end
end
和load_current_resource 方法只是为了表明它已初始化:
def load_current_resource
@current_resource = Chef::Resource::OmdCheck.new(@new_resource_name)
@current_resource.checkname(@new_resource.checkname) # right here!
@current_resource.sitename(@new_resource.sitename)
@current_resource.sitecfgroot(sprintf(CMK_CFGROOT_FRM, @new_resource.sitename))
@current_resource.perfometer(@new_resource.perfometer)
@current_resource.pnptemplate(@new_resource.pnptemplate)
@current_resource.exists = check_exists?(@current_resource.checkname)
end
非常感谢任何帮助。
【问题讨论】:
-
如果没有看到整个提供商,很难判断
get_check_filename(@current_resource.checkname)可能会做什么。不过诺亚是对的,你应该是current_resource,而不是@current_resource。
标签: ruby chef-infra lwrp