2016-09-23 88 views
1

我想扩展厨师IIS池LWRP(https://github.com/chef-cookbooks/iis/blob/master/resources/pool.rb),我希望有人能帮我找出语法。扩展厨师IIS池LWRP

这是我在哪里:
我创建了一个新的菜谱,然后我引用的食谱IIS, 后来我创造了我的库文件夹此文件:

# Located At: myCookbook/libraries/my_iis_pool.rb: 
::Chef::Recipe.send(:include, Opscode::IIS) 

class Chef 
    class Resource::MyPool < Chef::Resource::IIS::Pool 
    # Some Magic Happens 
    end 
end 

,然后食谱是这样的:

# Located At: myCookbook/recipes/default.rb 
mypool 'new-pool' do 
end 

我似乎无法得到<厨师::资源:: IIS ::池继承说法是正确的。 它产生这个错误:
NameError:未初始化不断厨师::资源:: IIS

我也试过

class Resource::MyPool < Chef::ResourceResolver.resolve(:iis_pool) 

产生这个错误:
类型错误:超类必须是一个类(NilClass给出)

任何帮助,将不胜感激。

感谢,
Abrehm

回答

0

不幸的是,没有直接扩展那样的基于DSL的自定义资源的好方法。最好的方法是创建一个内部使用iis_pool的新自定义资源,如同包装模式一样。这只允许您在现有资源代码之前或之后执行任何操作,但如果这还不够,您可能需要深入到一些更令人兴奋的元编程,例如edit_resource API或在配方文件中声明类。