2016-09-23 7 views
1

Ich möchte den Chef IIS Pool LWRP (https://github.com/chef-cookbooks/iis/blob/master/resources/pool.rb) erweitern und ich hoffte, jemand könnte mir helfen, herauszufinden, die Syntax.Erweitern Chef IIS Pool LWRP

Dies ist, wo ich bin an:
ich ein neues Kochbuch erstellt und dann referenzierten ich das IIS Kochbuch, danach habe ich diese Datei in den Ordner Bibliotheken von mir:

# 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 

und dann die Rezept sieht wie folgt aus:

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

ich kann nicht scheinen, die < Chef :: Ressourcen :: IIS :: Pool vererben Aussage richtig. Es erzeugt diesen Fehler:
Nameerror: nicht initialisierte Konstante Chef :: Ressourcen :: IIS

ich auch

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

versucht haben, die diesen Fehler erzeugt:
Typeerror: Super muss sein Eine Klasse (NilClass gegeben)

Jede Hilfe wäre willkommen.

Danke,
Abrehm

Antwort

0

Leider gibt es kein guter Weg, um eine DSL-basierte benutzerdefinierte Ressource wie das direkt zu verlängern. Der beste Ansatz besteht darin, einfach eine neue benutzerdefinierte Ressource zu erstellen, die intern iis_pool verwendet, also wie ein Wrapper-Muster. Dadurch können Sie nur Dinge tun, die vor oder nach dem vorhandenen Ressourcencode liegen. Wenn das nicht genug ist, müssen Sie sich vielleicht in eine aufregendere Metaprogrammierung wie die edit_resource APIs einreihen oder die Klassen in Rezeptdateien deklarieren.

Verwandte Themen