在Chef LWRP中使用git资源

时间:2014-07-25 21:37:53

标签: chef lwrp

我试图使用LWRP(与Chef 10一起)来创建我自己的部署资源,但是它引发了一个错误,我还没有找到文档中的任何示例

我的资源文件如下所示:

actions :install

attribute :package_name, :kind_of => String, :name_attribute => true
attribute :app_name, :kind_of => String
attribute :cmd_prefix, :kind_of => String, :default => ''
attribute :deploy_tag, :kind_of => String
attribute :wsgi_stat_port, :kind_of => Fixnum

当我尝试使用此资源时,出现以下错误:

NoMethodError
-------------
undefined method `deploy_tag' for nil:NilClass

Cookbook Trace:
---------------
/var/cache/chef/cookbooks/dpn_python_common/providers/app.rb:59:in `class_from_file'
/var/cache/chef/cookbooks/dpn_python_common/providers/app.rb:57:in `class_from_file'

其中跟踪中引用的提供程序文件的块如下:

git DEPLOY_PATH do
    repository repo_url
    reference @new_resource.deploy_tag
    user 'root'
    group 'root'
end

我已经尝试打印@new_resource.deploy_tag并且它包含了我期待的价值,所以我还以为git资源在LWRP中没有正常工作,但是我还没有找到任何指出我应该如何称呼这件​​事的文件。有什么建议吗?


实际答案:

我显然需要在使用资源块之前创建一个局部变量,如下所示:

deploy_tag = @new_resource.deploy_tag
git DEPLOY_PATH do
    repository repo_url
    reference deploy_tag
    user 'root'
    group 'root'
end

1 个答案:

答案 0 :(得分:0)

资源上的块已在资源对象的上下文中进行评估。基本上只需要deploy_tag