Я пытаюсь использовать 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