I’m a bit confused on how to get a gem (or other resource) installed on a machine that is a dependency for a Chef Exception Handler.
I’m using the EmailMe example from the wiki to familiarize myself with writing handlers:
I have the example working if I already have the pony gem installed, but once I try to perform a run on a clean machine, I get:
FATAL: LoadError: no such file to load – pony
After reading the following wiki page, I thought the proper place was to put it above the handler code.
However that results in:
FATAL: NoMethodError: chef_handler[MyOrganization::EmailMe] (chef_handler::email_me line 25) had an error: NoMethodError: undefined method `gem_package’ for main:Object
I seem to be caught in a catch-22. The handler is evaluated during the compile stage, but I need to install a gem which doesn’t happen until the execute. How are others doing this with gems or other dependancies not on the system?
I’m using the chef_handler cookbook and pulling the chef handler via the LWRP in a recipe.
Where is the best place to call gem_package? Thanks!