poise / application_nginx

Development repository for Opscode Cookbook application_nginx
Apache License 2.0
34 stars 55 forks source link

Chef 12 Incompatibility? Undefined method `process_hosts' for Chef::Resource::Template #20

Open SimonKaluza opened 9 years ago

SimonKaluza commented 9 years ago

Using Chef 12 with applicaiton_nginx's LWRP throws a NoMethodError for the process_hosts method call in before_deploy.

It works great in 11.18.0, so I assume Chef 12 introduced some breaking changes?

    ==> default: ================================================================================
    ==> default: Error executing action `before_deploy` on resource 'application_nginx_nginx_load_balancer[my_app]'
    ==> default: ================================================================================
    ==> default: 
    ==> default: 
    ==> default: NoMethodError
    ==> default: -------------
    ==> default: undefined method `process_hosts' for Chef::Resource::Template
    ==> default: 
    ==> default: 
    ==> default: Cookbook Trace:
    ==> default: ---------------
    ==> default: /tmp/vagrant-chef/c857f9f10998e00e365c7defdc4838d4/cookbooks/application_nginx/providers/nginx_load_balancer.rb:46:in `block (2 levels) in class_from_file'
    ==> default: 
    ==> default: /tmp/vagrant-chef/c857f9f10998e00e365c7defdc4838d4/cookbooks/application_nginx/providers/nginx_load_balancer.rb:39:in `block in class_from_file'
    ==> default: 
    ==> default: /tmp/vagrant-chef/c857f9f10998e00e365c7defdc4838d4/cookbooks/application/providers/default.rb:110:in `block (3 levels) in before_deploy'
    ==> default: 
    ==> default: /tmp/vagrant-chef/c857f9f10998e00e365c7defdc4838d4/cookbooks/application/providers/default.rb:109:in `each'
    ==> default: 
    ==> default: /tmp/vagrant-chef/c857f9f10998e00e365c7defdc4838d4/cookbooks/application/providers/default.rb:109:in `block (2 levels) in before_deploy'
    ==> default: 
    ==> default: 
    ==> default: Resource Declaration:
    ==> default: ---------------------
    ==> default: # In /tmp/vagrant-chef/c857f9f10998e00e365c7defdc4838d4/cookbooks/application/resources/default.rb
    ==> default: 
    ==> default: 115:       resource = super(resource_name.to_sym, self.name, &block)
    ==> default: 116:       break
    ==> default: 
    ==> default: Compiled Resource:
    ==> default: ------------------
    ==> default: # Declared in /tmp/vagrant-chef/c857f9f10998e00e365c7defdc4838d4/cookbooks/application/resources/default.rb:115:in `block in method_missing'
    ==> default: 
    ==> default: application_nginx_nginx_load_balancer("my_app") do
    ==> default:   action [:nothing]
    ==> default:   retries 0
    ==> default:   retry_delay 2
    ==> default:   default_guard_interpreter :default
    ==> default:   declared_type :application_nginx_nginx_load_balancer
    ==> default:   cookbook_name :"my_cookbook"
    ==> default:   recipe_name "app_server"
    ==> default:   hosts ["localhost"]
    ==> default:   application_port 8080
    ==> default:   ssl true
    ==> default:   ssl_certificate "/etc/nginx/ssl/ssl.pem"
    ==> default:   ssl_certificate_key "/etc/nginx/ssl/ssl.key"
    ==> default:   template "load_balancer.conf.erb"
    ==> default:   static_files {"/images"=>"/home/deployer/myapp/current/public/assets", "/stylesheets"=>"/home/deployer/my_app/current/public/assets", "/javascripts"=>"/home/deployer/my_app/current/public/assets"}
    ==> default:   type :nginx_load_balancer
    ==> default:   application_server_role "imy_app_application_server"
    ==> default: end
rberger commented 9 years ago

Looks like if def process_host(nodes) at line 73 in nginx_load_balancer.rb is not protected the error goes away.