扩展Chef-IIS池LWRP

扩展Chef-IIS池LWRP,iis,chef-infra,chef-recipe,Iis,Chef Infra,Chef Recipe,我想扩展Chef-IIS池LWRP(),希望有人能帮我弄清楚语法 这就是我所处的位置: 我创建了一本新的食谱,然后引用了IIS食谱, 之后,我在我的libraries文件夹中创建了此文件: # Located At: myCookbook/libraries/my_iis_pool.rb: ::Chef::Recipe.send(:include, Opscode::IIS) class Chef class Resource::MyPool < Chef::Resource::II

我想扩展Chef-IIS池LWRP(),希望有人能帮我弄清楚语法

这就是我所处的位置:
我创建了一本新的食谱,然后引用了IIS食谱, 之后,我在我的libraries文件夹中创建了此文件:

# 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
我似乎无法正确使用 NameError:未初始化的常量Chef::Resource::IIS

我也试过了

class Resource::MyPool < Chef::ResourceResolver.resolve(:iis_pool)
class Resource::MyPool
这会产生此错误:
TypeError:超类必须是类(给定NilClass)

任何帮助都将不胜感激

谢谢,

不幸的是,像这样直接扩展基于DSL的定制资源并不是一个好方法。最好的方法是创建一个新的自定义资源,在内部使用
iis\u pool
,有点像包装器模式。不过,这只允许您在现有资源代码之前或之后进行操作,如果这还不够的话,您可能需要深入研究一些更令人兴奋的元编程,比如
edit\u resource
API或在配方文件中声明类。

不幸的是,没有一种好方法可以直接扩展这样的基于DSL的自定义资源。最好的方法是创建一个新的自定义资源,在内部使用
iis\u pool
,有点像包装器模式。这只允许您在现有资源代码之前或之后进行操作,如果这还不够,您可能需要深入研究一些更令人兴奋的元编程,如
edit\u resource
api或在配方文件中声明类

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