Использование ресурса git в 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

person Josh Hancock    schedule 25.07.2014    source источник
comment
В этот момент new_resource не был инициализирован...   -  person sethvargo    schedule 26.07.2014


Ответы (1)


Блок ресурса уже оценивается в контексте объекта ресурса. Просто сделайте это deploy_tag.

person coderanger    schedule 26.07.2014
comment
Если я просто использую deploy_tag, я получаю ошибку undefined method 'deploy_tag' for Chef::Resource::Git - person Josh Hancock; 28.07.2014
comment
Я понял это и обновляю вопрос ... Я приму этот ответ, потому что он привел к тому, что я понял это. - person Josh Hancock; 28.07.2014