2016-09-23 2 views
1

Я хотел бы расширить Chef IIS Pool LWRP (https://github.com/chef-cookbooks/iis/blob/master/resources/pool.rb), и я надеялся, что кто-то поможет мне разобраться в синтаксисе.Расширение шеф-повара IIS Pool 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 

Я не могу показаться, чтобы получить < Chef :: РЕСУРС :: IIS :: Pool о наследует правильно. Он производит эту ошибку:
NameError: неинициализированный постоянного Chef :: Resource :: IIS

Я также попытался

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

, который производит эту ошибку:
TypeError: суперкласс должен быть a Класс (предоставлен NilClass)

Любая помощь будет оценена по достоинству.

Спасибо,
Abrehm

ответ

0

К сожалению, не существует хороший способ для продлить DSL на основе пользовательских ресурсов, как это. Лучший подход заключается в том, чтобы просто создать новый пользовательский ресурс, который использует внутри себя iis_pool, поэтому вроде как шаблон оболочки. Это позволяет вам делать вещи до или после существующего кода ресурса, хотя, если этого недостаточно, вам, возможно, придется вникать в некоторые более интересные метапрограммы, такие как API-интерфейсы edit_resource или объявление классов в файлах рецептов.

Смежные вопросы