chef generate cookbook foo with ChefDK 0.9.0 throws "undefined method `cookbook_gems' for Chef::Resource::Template" error
Opened this issue · 2 comments
dougireton commented
We will also post results with chefdk 0.8.1
C:\Users\me\chef\cookbooks> chef generate cookbook foo
using ChefGen flavor 'nordstrom'
[2015-11-02T12:00:50-08:00] WARN: ExpandNodeObject#load_node is deprecated. Please use Chef::PolicyBuilder::Dynamic instead of using ExpandNodeObject directly at C:/opscode/chefdk/embed
ded/lib/ruby/gems/2.1.0/gems/chef-dk-0.9.0/lib/chef-dk/chef_runner.rb:54:in `policy'
Compiling Cookbooks...
Recipe: nordstrom::cookbook
* directory[C:/Users/me/chef/cookbooks/foo] action create (up to date)
* template[C:/Users/me/chef/cookbooks/foo/Gemfile] action create
================================================================================
Error executing action `create` on resource 'template[C:/Users/me/chef/cookbooks/foo/Gemfile]'
================================================================================
NoMethodError
-------------
undefined method `cookbook_gems' for Chef::Resource::Template
Resource Declaration:
---------------------
# In C:/Users/me/AppData/Local/chefdk/gem/ruby/2.1.0/gems/chef-gen-flavor-base-0.9.2/lib/chef_gen/flavor_base/resource_helpers.rb
54: @recipe.send(:template, destination_path(template)) do
55: source src
56: action resource_action
57: helpers ChefDK::Generator::TemplateHelper
58: attrs.each { |a, v| send a, v }
59: end
60: # :nocov:
Compiled Resource:
------------------
# Declared in C:/Users/me/AppData/Local/chefdk/gem/ruby/2.1.0/gems/chef-gen-flavor-base-0.9.2/lib/chef_gen/flavor_base/resource_helpers.rb:54:in `block in add_templates'
template("C:/Users/me/chef/cookbooks/foo/Gemfile") do
action [:create]
retries 0
retry_delay 2
default_guard_interpreter :default
path "C:/Users/me/chef/cookbooks/foo/Gemfile"
backup 5
source "Gemfile.erb"
variables #<Chef::DelayedEvaluator:0x6ea50b8@C:/Users/me/AppData/Local/chefdk/gem/ruby/2.1.0/gems/chef-gen-flavor-base-0.9.2/lib/chef_gen/snippet/cookbook_base.rb:83>
helper_modules [ChefDK::Generator::TemplateHelper]
declared_type :template
cookbook_name :nordstrom
recipe_name "cookbook"
end
ERROR: Chef failed to converge: template[C:/Users/me/chef/cookbooks/foo/Gemfile] (nordstrom::cookbook line 54) had an error: NoMethodError: undefined method `cookbook_gems' for Chef::
Resource::Template
Caused by: (NoMethodError) template[C:/Users/me/chef/cookbooks/foo/Gemfile] (nordstrom::cookbook line 54) had an error: NoMethodError: undefined method `cookbook_gems' for Chef::Resou
rce::Template
oifland commented
This error occurs with ChefDK versions 0.9.0 and (just released) 0.10.0, but 0.8.1 (the version before 0.9.0) is fine, so something must have changed in 0.9.0 to break it. I'm investigating a bit more now.
oifland commented
Looking at the differences between 0.8.1 and 0.9.0, it looks like a bunch of the generating logic changed (partly to support chef generate generator
). When I get a chance to read through the changes, I'll post any findings here.